/******************************************************************************* * Copyright (c) 2006-2012 * Software Technology Group, Dresden University of Technology * DevBoost GmbH, Berlin, Amtsgericht Charlottenburg, HRB 140026 * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Software Technology Group - TU Dresden, Germany; * DevBoost GmbH - Berlin, Germany * - initial API and implementation ******************************************************************************/ package org.reuseware.coconut.description.browse.views.additionalfacets; import org.eclipse.jface.viewers.DoubleClickEvent; import org.eclipse.jface.viewers.IDoubleClickListener; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.TableViewer; import org.eclipse.jface.viewers.TableViewerColumn; import org.eclipse.jface.viewers.ViewerSorter; import org.eclipse.swt.SWT; import org.eclipse.swt.dnd.DND; import org.eclipse.swt.dnd.TextTransfer; import org.eclipse.swt.dnd.Transfer; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Table; import org.reuseware.coconut.description.FacetTypeDecorator; import org.reuseware.coconut.description.browse.util.FacetDragListener; import org.reuseware.coconut.description.browse.views.AbstractBrowserView; import org.reuseware.coconut.description.classify.UtilityProvider; public class AdditionalFacetsView extends AbstractBrowserView { public static final String VIEW_ID = "org.reuseware.coconut.description.browse.views.additionalfacets.AdditionalFacetsView"; private AdditionalFacetsController myController; private TableViewer afViewer; class NameSorter extends ViewerSorter { } @Override public void createPartControl(Composite parent) { myController = new AdditionalFacetsController(this); controller = myController; // create facet table afViewer = new TableViewer(parent, SWT.SINGLE | SWT.V_SCROLL | SWT.FULL_SELECTION); // build table String[] head = { "Name", "Description" }; int[] widthPercent = { 33, 67 }; Table table = afViewer.getTable(); table.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); table.setLinesVisible(true); table.setHeaderVisible(true); for (int i = 0; i < head.length; i++) { TableViewerColumn column = new TableViewerColumn(afViewer, SWT.LEFT); column.getColumn().setText(head[i]); column.getColumn().setResizable(true); column.getColumn().setMoveable(false); } UtilityProvider.addResizeSupportToTable(table, widthPercent, 7); afViewer.setContentProvider(new AddContentProvider()); afViewer.setLabelProvider(new AddLabelProvider()); afViewer.setSorter(new NameSorter()); afViewer.addDoubleClickListener(new IDoubleClickListener() { public void doubleClick(DoubleClickEvent event) { IStructuredSelection selection = (IStructuredSelection) event.getSelection(); myController.select((FacetTypeDecorator) selection.getFirstElement()); } }); int ops = DND.DROP_COPY | DND.DROP_MOVE; Transfer[] transfers = new Transfer[] { TextTransfer.getInstance() }; afViewer.addDragSupport(ops, transfers, new FacetDragListener(afViewer)); update(); } @Override public void update() { if (afViewer.getContentProvider() == null) afViewer.setContentProvider(new AddContentProvider()); if (afViewer.getControl().isDisposed()) { return; } afViewer.setInput(myController.getAdditionalFacets()); } }