/* * 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); } } }