/***************************************************************************** * Limpet - the Lightweight InforMation ProcEssing Toolkit * http://limpet.info * * (C) 2015-2016, Deep Blue C Technologies Ltd * * This library is free software; you can redistribute it and/or * modify it under the terms of the Eclipse Public License v1.0 * (http://www.eclipse.org/legal/epl-v10.html) * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *****************************************************************************/ package info.limpet.ui.analysis_view; import info.limpet.IStoreItem; import info.limpet.analysis.AnalysisLibrary; import info.limpet.data.operations.CollectionComplianceTests; import info.limpet.ui.core_view.CoreAnalysisView; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import org.eclipse.jface.viewers.ArrayContentProvider; import org.eclipse.jface.viewers.ColumnLabelProvider; import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.jface.viewers.TableViewer; import org.eclipse.jface.viewers.TableViewerColumn; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Composite; /** * display analysis overview of selection * * @author ian * */ public class AnalysisView extends CoreAnalysisView { /** * The ID of the view as specified by the extension. */ public static final String ID = "info.limpet.ui.AnalysisView"; private TableViewer viewer; public AnalysisView() { super(ID, "Analysis"); } @Override protected String getTextForClipboard() { StringBuffer output = new StringBuffer(); @SuppressWarnings("unchecked") ArrayList<ArrayList<String>> list = (ArrayList<ArrayList<String>>) viewer .getInput(); String separator = System.getProperty("line.separator"); Iterator<ArrayList<String>> iter = list.iterator(); while (iter.hasNext()) { ArrayList<java.lang.String> arrayList = (ArrayList<java.lang.String>) iter .next(); output.append(arrayList.get(0)); output.append(", "); output.append(arrayList.get(1)); output.append(separator); } return output.toString(); } @Override public void display(List<IStoreItem> res) { // clear the output final ArrayList<ArrayList<String>> resList = new ArrayList<ArrayList<String>>(); AnalysisLibrary ana = new AnalysisLibrary() { @Override protected void presentResults(List<String> titles, List<String> values) { // produce two column list Iterator<String> tIter = titles.iterator(); Iterator<String> vIter = values.iterator(); while (tIter.hasNext()) { ArrayList<String> thisRow = new ArrayList<String>(); thisRow.add(tIter.next()); thisRow.add(vIter.next()); resList.add(thisRow); } } }; ana.analyse(res); viewer.setInput(resList); } /** * This is a callback that will allow us to create the viewer and initialize * it. */ public void createPartControl(Composite parent) { viewer = new TableViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL); viewer.setContentProvider(ArrayContentProvider.getInstance()); viewer.setLabelProvider(new LabelProvider()); viewer.setInput(null); viewer.getTable().setHeaderVisible(true); makeActions(); contributeToActionBars(); // define the two columns TableViewerColumn colTitle = new TableViewerColumn(viewer, SWT.NONE); colTitle.getColumn().setWidth(150); colTitle.getColumn().setText("Title"); colTitle.setLabelProvider(new ColumnLabelProvider() { @SuppressWarnings("unchecked") @Override public String getText(Object element) { ArrayList<String> p = (ArrayList<String>) element; return p.get(0); } }); TableViewerColumn colValue = new TableViewerColumn(viewer, SWT.NONE); colValue.getColumn().setWidth(200); colValue.getColumn().setText("Value"); colValue.setLabelProvider(new ColumnLabelProvider() { @SuppressWarnings("unchecked") @Override public String getText(Object element) { ArrayList<String> p = (ArrayList<String>) element; return p.get(1); } }); setupListener(); } /** * Passing the focus request to the viewer's control. */ public void setFocus() { viewer.getControl().setFocus(); } @Override protected boolean appliesToMe(List<IStoreItem> res, CollectionComplianceTests tests) { return true; } }