summaryrefslogtreecommitdiff
path: root/src/plugins/logger.collector/src/com/motorola/studio/android/logger/collector/ui/LogFileColumn.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/logger.collector/src/com/motorola/studio/android/logger/collector/ui/LogFileColumn.java')
-rw-r--r--src/plugins/logger.collector/src/com/motorola/studio/android/logger/collector/ui/LogFileColumn.java217
1 files changed, 217 insertions, 0 deletions
diff --git a/src/plugins/logger.collector/src/com/motorola/studio/android/logger/collector/ui/LogFileColumn.java b/src/plugins/logger.collector/src/com/motorola/studio/android/logger/collector/ui/LogFileColumn.java
new file mode 100644
index 0000000..4541f32
--- /dev/null
+++ b/src/plugins/logger.collector/src/com/motorola/studio/android/logger/collector/ui/LogFileColumn.java
@@ -0,0 +1,217 @@
+/*
+ * Copyright (C) 2012 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.motorola.studio.android.logger.collector.ui;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Listener;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.TableColumn;
+import org.eclipse.swt.widgets.TableItem;
+
+import com.motorola.studio.android.logger.collector.core.ILogFile;
+import com.motorola.studio.android.logger.collector.core.internal.CollectLogFile;
+import com.motorola.studio.android.logger.collector.util.LoggerCollectorMessages;
+import com.motorola.studio.android.logger.collector.util.PlatformException;
+import com.motorola.studio.android.logger.collector.util.WidgetsUtil;
+
+/**
+ * This class visually represents a log file Table View.
+ */
+public class LogFileColumn extends Composite
+{
+
+ /**
+ * The table of log files.
+ */
+ private Table tableLogFile = null;
+
+ /**
+ *
+ */
+ CollectLogFile collectLogFile = null;
+
+ /**
+ * Public Constructor.
+ *
+ * @param parent Parent this Composite.
+ * @param style Composite Style.
+ */
+ public LogFileColumn(Composite parent, int style)
+ {
+ super(parent, style);
+ collectLogFile = new CollectLogFile();
+ initialize();
+ }
+
+ /**
+ * This method contains property of this composite.
+ */
+ private void initialize()
+ {
+ GridLayout gridLayoutTableView = new GridLayout();
+ gridLayoutTableView.horizontalSpacing = 0;
+ gridLayoutTableView.marginWidth = 0;
+ gridLayoutTableView.marginHeight = 0;
+ gridLayoutTableView.verticalSpacing = 0;
+ GridData gridDatagridLayout = new GridData(GridData.FILL_VERTICAL | SWT.TOP);
+ this.setBackgroundMode(SWT.NONE);
+ this.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE));
+ this.setLayoutData(gridDatagridLayout);
+ this.setLayout(gridLayoutTableView);
+
+ GridData gridData = new GridData(GridData.VERTICAL_ALIGN_BEGINNING | GridData.FILL_BOTH);
+ gridData.widthHint = 230;
+ gridData.heightHint = 300;
+ this.setLayoutData(gridData);
+
+ refresh();
+ }
+
+ /**
+ * This is a callback that will allow us to create the viewer and initialize
+ * it.
+ */
+ public void refresh()
+ {
+ GridData gridDataTableView =
+ new GridData(GridData.VERTICAL_ALIGN_BEGINNING | GridData.FILL_BOTH);
+ gridDataTableView.widthHint = 236;
+ gridDataTableView.heightHint = 300;
+ if (tableLogFile == null)
+ {
+ tableLogFile = new Table(this, SWT.CHECK | SWT.BORDER);
+ tableLogFile.setLayoutData(gridDataTableView);
+ }
+ tableLogFile.removeAll();
+ try
+ {
+ for (ILogFile log : collectLogFile.getLogFileList())
+ {
+ TableItem tableItem = new TableItem(tableLogFile, SWT.NONE);
+ tableItem.setText(log.getLogName());
+ tableItem.setData(log);
+ }
+ }
+ catch (Exception e)
+ {
+ MessageDialog.openError(
+ getShell(),
+ LoggerCollectorMessages.getInstance().getString(
+ "logger.collector.wizard.page.title"), //$NON-NLS-1$
+ LoggerCollectorMessages.getInstance().getString(
+ "error.logger.collector.mount.tableview")); //$NON-NLS-1$
+ }
+ packTableColumns();
+ checkAll(true);
+ }
+
+ /**
+ * This method is responsible to pack tree columns
+ */
+ private void packTableColumns()
+ {
+ // Pack the columns
+ TableColumn[] columns = tableLogFile.getColumns();
+ for (int i = 0, n = columns.length; i < n; i++)
+ {
+ columns[i].pack();
+ }
+ }
+
+ /**
+ * This method collects and zips selected log files.
+ *
+ * @param directory The output directory
+ * @param filename The output file name
+ * @return if collects successfully
+ * @throws PlatformException
+ */
+ public boolean collect(String filename) throws PlatformException
+ {
+ return new CollectLogFile().zipLogFiles(filename,
+ WidgetsUtil.getCheckedLeafItems(this.tableLogFile));
+ }
+
+ /**
+ * This method tests if the table view has nodes and if there is selected
+ * nodes.
+ *
+ * @return true if the table view has nodes and if there is selected nodes.
+ */
+ public boolean hasNodeSelected()
+ {
+ return WidgetsUtil.getCheckedLeafItems(this.tableLogFile).size() > 0;
+ }
+
+ /**
+ * This method collects and compacts selected log files.
+ *
+ * @param directory The output directory
+ * @param filename The output file name
+ * @return if collects successfully
+ */
+ public ArrayList<String> selectedLogFilesExist()
+ {
+ List<TableItem> list = WidgetsUtil.getCheckedLeafItems(this.tableLogFile);
+ ArrayList<String> notFoundItems = new ArrayList<String>();
+ for (TableItem tableItem : list)
+ {
+ Object data = tableItem.getData();
+ if (data instanceof ILogFile)
+ {
+ ILogFile logFile = (ILogFile) data;
+ for (IPath path : logFile.getLogFilePath())
+ {
+ if (!WidgetsUtil.fileExist(path.toOSString()))
+ {
+ notFoundItems.add(logFile.getLogName());
+ }
+
+ }
+ }
+ }
+ return notFoundItems;
+ }
+
+ /**
+ * This method adds a TableListener
+ *
+ * @param eventType Type of event
+ * @param listener Listener
+ */
+ public void addTableListener(int eventType, Listener listener)
+ {
+ this.tableLogFile.addListener(eventType, listener);
+ }
+
+ public void checkAll(boolean selectionValue)
+ {
+ for (TableItem item : tableLogFile.getItems())
+ {
+ item.setChecked(selectionValue);
+ }
+
+ }
+}