/** * This file is part of Archiv-Editor. * * The software Archiv-Editor serves as a client user interface for working with * the Person Data Repository. See: pdr.bbaw.de * * The software Archiv-Editor was developed at the Berlin-Brandenburg Academy * of Sciences and Humanities, Jägerstr. 22/23, D-10117 Berlin. * www.bbaw.de * * Copyright (C) 2010-2013 Berlin-Brandenburg Academy * of Sciences and Humanities * * The software Archiv-Editor was developed by @author: Christoph Plutte. * * Archiv-Editor is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * Archiv-Editor 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. See the * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with Archiv-Editor. * If not, see <http://www.gnu.org/licenses/lgpl-3.0.html>. */ package org.bbaw.pdr.ae.view.main.views; import java.util.ArrayList; import java.util.HashMap; import java.util.Observable; import java.util.Observer; import java.util.Vector; import org.bbaw.pdr.ae.common.AEConstants; import org.bbaw.pdr.ae.common.AEPluginIDs; import org.bbaw.pdr.ae.common.CommonActivator; import org.bbaw.pdr.ae.common.NLMessages; import org.bbaw.pdr.ae.common.icons.IconsInternal; import org.bbaw.pdr.ae.config.model.ConfigItem; import org.bbaw.pdr.ae.control.core.PDRConfigProvider; import org.bbaw.pdr.ae.control.facade.Facade; import org.bbaw.pdr.ae.control.interfaces.AMainSearcher; import org.bbaw.pdr.ae.metamodel.IAEPresentable; import org.bbaw.pdr.ae.metamodel.PdrId; import org.bbaw.pdr.ae.model.Aspect; import org.bbaw.pdr.ae.model.BasicPersonData; import org.bbaw.pdr.ae.model.PdrObject; import org.bbaw.pdr.ae.model.Person; import org.bbaw.pdr.ae.model.ReferenceMods; import org.bbaw.pdr.ae.model.ReferenceModsTemplate; import org.bbaw.pdr.ae.model.search.Criteria; import org.bbaw.pdr.ae.model.search.PdrQuery; import org.bbaw.pdr.ae.model.view.TreeNode; import org.bbaw.pdr.ae.view.control.ViewHelper; import org.bbaw.pdr.ae.view.control.filters.OnlyAspectDivergentMarkup; import org.bbaw.pdr.ae.view.control.filters.OnlyIncorrectPDRObjectsFilter; import org.bbaw.pdr.ae.view.control.filters.PersonConcurrenceFilter; import org.bbaw.pdr.ae.view.control.filters.PersonIdentifierFilter; import org.bbaw.pdr.ae.view.control.filters.PersonWithoutICCUFilter; import org.bbaw.pdr.ae.view.control.filters.PersonWithoutLCCNFilter; import org.bbaw.pdr.ae.view.control.filters.PersonWithoutPNDFilter; import org.bbaw.pdr.ae.view.control.filters.PersonWithoutVIAFFilter; import org.bbaw.pdr.ae.view.control.filters.TreeNodeNewFilter; import org.bbaw.pdr.ae.view.control.filters.TreeNodeUpdatedFilter; import org.bbaw.pdr.ae.view.control.provider.AEConfigPresentableContentProvider; import org.bbaw.pdr.ae.view.control.provider.AEConfigPresentableLabelProvider; import org.bbaw.pdr.ae.view.control.provider.TreeContentProvider; import org.bbaw.pdr.ae.view.control.provider.TreeLabelProvider; import org.bbaw.pdr.ae.view.main.internal.Activator; import org.bbaw.pdr.ae.view.main.internal.TreeSearchHelper; import org.bbaw.pdr.ae.view.main.internal.TreeSelectionSourceProvider; import org.eclipse.core.commands.Command; import org.eclipse.core.commands.ExecutionException; import org.eclipse.core.commands.IParameter; import org.eclipse.core.commands.NotEnabledException; import org.eclipse.core.commands.NotHandledException; import org.eclipse.core.commands.Parameterization; import org.eclipse.core.commands.ParameterizedCommand; import org.eclipse.core.commands.State; import org.eclipse.core.commands.common.NotDefinedException; import org.eclipse.core.runtime.ILog; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Platform; import org.eclipse.core.runtime.Status; import org.eclipse.core.runtime.jobs.Job; import org.eclipse.jface.action.Action; import org.eclipse.jface.action.GroupMarker; import org.eclipse.jface.action.IMenuListener; import org.eclipse.jface.action.IMenuManager; import org.eclipse.jface.action.MenuManager; import org.eclipse.jface.action.Separator; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jface.fieldassist.ControlDecoration; import org.eclipse.jface.fieldassist.FieldDecorationRegistry; import org.eclipse.jface.resource.ImageRegistry; import org.eclipse.jface.viewers.ArrayContentProvider; import org.eclipse.jface.viewers.ComboViewer; import org.eclipse.jface.viewers.DoubleClickEvent; import org.eclipse.jface.viewers.IDoubleClickListener; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.ISelectionChangedListener; import org.eclipse.jface.viewers.ISelectionProvider; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.jface.viewers.SelectionChangedEvent; import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.jface.viewers.TreeViewer; import org.eclipse.jface.viewers.ViewerFilter; import org.eclipse.swt.SWT; import org.eclipse.swt.custom.CTabFolder; import org.eclipse.swt.custom.CTabFolder2Adapter; import org.eclipse.swt.custom.CTabFolderEvent; import org.eclipse.swt.custom.CTabItem; import org.eclipse.swt.custom.SashForm; import org.eclipse.swt.events.KeyEvent; import org.eclipse.swt.events.KeyListener; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Combo; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Event; import org.eclipse.swt.widgets.Group; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Menu; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.TabFolder; import org.eclipse.swt.widgets.TabItem; import org.eclipse.swt.widgets.Text; import org.eclipse.swt.widgets.Tree; import org.eclipse.ui.IActionBars; import org.eclipse.ui.ISelectionListener; import org.eclipse.ui.ISizeProvider; import org.eclipse.ui.IWorkbenchActionConstants; import org.eclipse.ui.IWorkbenchPart; import org.eclipse.ui.IWorkbenchWindow; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.commands.ICommandService; import org.eclipse.ui.handlers.IHandlerService; import org.eclipse.ui.part.ViewPart; import org.eclipse.ui.progress.UIJob; import org.eclipse.ui.services.ISourceProviderService; /** * Class creates tree view on left side of GUI view. * @author cplutte */ public class Treeview extends ViewPart implements ISelectionListener, ISelectionProvider, Observer, ISizeProvider { /** * Id des Treeviews. */ public static final String ID = "org.bbaw.pdr.ae.view.main.views.Treeview"; //$NON-NLS-1$ /** The sash form main. */ private SashForm _sashFormMain; /** Treeviewer. */ private TreeViewer _treeViewer; /** tree viewer of all persons. */ private TreeViewer _allPersonsTreeViewer; /** tree viewer of all references. */ private TreeViewer _allReferencesTreeViewer; /** The _tree search helper. */ private TreeSearchHelper _treeSearchHelper = new TreeSearchHelper(); /** The _combo tree viewer. */ private ComboViewer _comboTreeViewer; /** The _combo semantic viewer. */ private ComboViewer _comboSemanticViewer; /** The treenode updated filter. */ private ViewerFilter _treenodeUpdatedFilter = new TreeNodeUpdatedFilter(); /** The treenode new filter. */ private ViewerFilter _treenodeNewFilter = new TreeNodeNewFilter(); /** The only incorrect pdr objects. */ private ViewerFilter _onlyIncorrectPDRObjects = new OnlyIncorrectPDRObjectsFilter(); /** The only i aspects divergent markup. */ private ViewerFilter _onlyIAspectsDivergentMarkup = new OnlyAspectDivergentMarkup(); /** The person identifier filter. */ private ViewerFilter _personIdentifierFilter = new PersonIdentifierFilter(); /** The person concurrence filter. */ private ViewerFilter _personConcurrenceFilter = new PersonConcurrenceFilter(); /** The person without pnd filter. */ private ViewerFilter _personWithoutPNDFilter = new PersonWithoutPNDFilter(); /** The person without lccn filter. */ private ViewerFilter _personWithoutLCCNFilter = new PersonWithoutLCCNFilter(); /** The person without viaf filter. */ private ViewerFilter _personWithoutVIAFFilter = new PersonWithoutVIAFFilter(); /** The person without iccu filter. */ private ViewerFilter _personWithoutICCUFilter = new PersonWithoutICCUFilter(); /** The only person concurrences. */ private Action _onlyAspectsWithDivergentMarkup, _openAspectsInNewTap, _openReferencesInNewTap, _onlyUpdatedObjects, _onlyNewObjects, _onlyIncorrectObjects, _onlyPersonIdentifiers, _onlyPersonConcurrences, _selectAllChildNods; /** The only without iccu persons. */ private Action _onlyWithoutPNDPersons, _onlyWithoutLCCNPersons, _onlyWithoutVIAFPersons, _onlyWithoutICCUPersons; /** The load query. */ private Action _loadQuery; /** The tree viewer map. */ private HashMap<String, TreeViewer> _treeViewerMap = new HashMap<String, TreeViewer>(); /** * Tabfolder containing Trees. */ private CTabFolder _tabFolderLeft; /** * contains the currently selected Object. */ private Group _currentObjectGroup; /** * group contains Combos, Text, Button for TreeBuilder. */ private Group _groupTree; /** * contains the currently selected Object. */ private Text _currentObjectText; /** search text. */ private Text _searchText; /** * part of Searchcombos for tree builder. */ private Combo _comboTree; /** * Combo for Selection of Criteria for TreeBuilder. */ private Combo _comboTag; /** The _search result. */ private Object _searchResult; /** The _selection. */ private PdrObject[] _selection; /** The selection changed listeners. */ private ArrayList<ISelectionChangedListener> _selectionChangedListeners = new ArrayList<ISelectionChangedListener>(); /** Button to create tree. */ private Button _treeButton; /** The _add aspect button. */ private Button _addAspectButton; /** The _add similar aspect button. */ private Button _addSimilarAspectButton; /** pdrquery. */ private PdrQuery _pdrQuery; /** criteria for query. */ private Criteria _criteria; /** tree counter. */ private int _keyCounter = 0; /** The pressed. */ @SuppressWarnings("unused") private boolean _pressed = false; /** _facade singleton instance. */ private Facade _facade = Facade.getInstanz(); /** Logger. */ private ILog _iLogger = AEConstants.ILOGGER; /** _MainSearcher als Singleton. */ private AMainSearcher _mainSearcher = _facade.getMainSearcher(); /** Instance of shared image registry. */ private ImageRegistry _imageReg = CommonActivator.getDefault().getImageRegistry(); /** * Hauptmethode der ViewKlasse. * @param parent. */ private Shell _parentShell; /** The ref facets. */ private String[] _refFacets = new String[] {"title", "subtitle", "partName", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ "name", "genre", "dateCreated", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ "dateIssued", "dateCaptured", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ "copyrightDate", "publisher", "place", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ "edition", "physicalLocation", "shelfLocator"}; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ private boolean _advanced = Platform.getPreferencesService().getBoolean(CommonActivator.PLUGIN_ID, "AE_ADVANCED_VERSION", AEConstants.AE_ADVANCED_VERSION, null); private Button _facetPreferenceButton; /** * public Constructor. */ public Treeview() { } @Override public final void addSelectionChangedListener(final ISelectionChangedListener listener) { _selectionChangedListeners.add(listener); } /** * Builds the tab folder left. */ private void buildTabFolderLeft() { _tabFolderLeft = new CTabFolder(_groupTree, SWT.TOP); _tabFolderLeft.setLayout(new GridLayout()); _tabFolderLeft.setLayoutData(new GridData(GridData.FILL_BOTH)); // ((GridData) _tabFolderLeft.getLayoutData()).horizontalAlignment = // SWT.FILL; // ((GridData) _tabFolderLeft.getLayoutData()).grabExcessHorizontalSpace // = true; // ((GridData) _tabFolderLeft.getLayoutData()).verticalAlignment = // SWT.FILL; // ((GridData) _tabFolderLeft.getLayoutData()).grabExcessVerticalSpace = // true; ((GridData) _tabFolderLeft.getLayoutData()).horizontalSpan = 4; _tabFolderLeft.setUnselectedImageVisible(false); _tabFolderLeft.setUnselectedCloseVisible(false); _tabFolderLeft.setMRUVisible(true); ViewHelper.setTabfolderSimple(_tabFolderLeft, false); _tabFolderLeft.addCTabFolder2Listener(new CTabFolder2Adapter() { @Override public void close(final CTabFolderEvent event) { _treeViewerMap.remove(_tabFolderLeft.getSelection().getData("key")); //$NON-NLS-1$ uncheckToggleCommands(); } }); PlatformUI.getWorkbench().getHelpSystem().setHelp(_tabFolderLeft, "org.bbaw.pdr.ae.help._tabFolderLeft"); //$NON-NLS-1$ _tabFolderLeft.setSelection(0); _tabFolderLeft.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(final SelectionEvent ev) { String key = (String) _tabFolderLeft.getSelection().getData("key"); String type = (String) _tabFolderLeft.getSelection().getData("type"); TreeViewer tv = _treeViewerMap.get(key); if (tv != null) { tv.resetFilters(); //$NON-NLS-1$ } uncheckToggleCommands(); // get the window (which is a IServiceLocator) IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow(); // get the service ISourceProviderService service = (ISourceProviderService) window .getService(ISourceProviderService.class); // get our source provider by querying by the variable name TreeSelectionSourceProvider treeSelectionSourceProvider = (TreeSelectionSourceProvider) service .getSourceProvider(AEPluginIDs.SOURCE_PARAMETER_TREE); // set the value treeSelectionSourceProvider.setTreeSelection(key); treeSelectionSourceProvider.setTreeType(type); // System.out.println("treeSelectionSourceProvider.setTreeType(type) " // + type); // System.out.println("treeSelectionSourceProvider.setTreeType(key) " // + key); treeSelectionSourceProvider.setTreeViewer(tv); } }); // SelectionListener _sashFormMain.redraw(); createTreeViewer(_tabFolderLeft, "allPersons"); //$NON-NLS-1$ _keyCounter++; createTreeViewer(_tabFolderLeft, "allReferences"); //$NON-NLS-1$ _tabFolderLeft.setSelection(0); // initialize sources parameters: IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow(); // get the service ISourceProviderService service = (ISourceProviderService) window.getService(ISourceProviderService.class); // get our source provider by querying by the variable name TreeSelectionSourceProvider treeSelectionSourceProvider = (TreeSelectionSourceProvider) service .getSourceProvider(AEPluginIDs.SOURCE_PARAMETER_TREE); // set the value treeSelectionSourceProvider.setTreeSelection("allPersons"); treeSelectionSourceProvider.setTreeType("pdrPo"); TreeViewer tv = _treeViewerMap.get("allPersons"); if (tv != null) { treeSelectionSourceProvider.setTreeViewer(tv); } _keyCounter++; _groupTree.layout(); _groupTree.pack(); _sashFormMain.layout(); } /** * @param treeViewer This method creates the Tree. */ private void buildTree(final TreeViewer treeViewer) { createActions(); createMenus(treeViewer.getControl()); treeViewer.addSelectionChangedListener(new ISelectionChangedListener() { @Override public void selectionChanged(final SelectionChangedEvent event) { if (event.getSelection() instanceof IStructuredSelection) { IStructuredSelection selection = (IStructuredSelection) event.getSelection(); Object[] objs = selection.toArray(); TreeNode[] tns = new TreeNode[objs.length]; TreeNode tn; for (int i = 0; i < objs.length; i++) { tns[i] = (TreeNode) objs[i]; } System.out.println("Selection size " + selection.size()); boolean loaded = true; if (tns != null && tns.length > 0) { tn = tns[tns.length - 1]; if (tn.getPdrQuery() != null) { loaded = false; _treeSearchHelper.processTreeNode(tn); treeViewer.refresh(); } if (tn != null && tn.hasChildren()) { if (!treeViewer.getExpandedState(tn)) { loaded = tn.getPdrObject() != null; // treeViewer.setExpandedState(tn, // !treeViewer.getExpandedState(tn)); } } if (loaded) // objects are only selected if they are // already loaded, otherwise it might take // too long { // FIXME Selection steuerung ArrayList<PdrObject> helpObjs = new ArrayList<PdrObject>(); for (int i = 0; i < tns.length; i++) { if (tns[i].getPdrObject() != null) { helpObjs.add(tns[i].getPdrObject()); } } setStatusLine(helpObjs.size() + " " + NLMessages.getString("View_objects_selected")); _selection = helpObjs.toArray(new PdrObject[helpObjs.size()]); _facade.setCurrentTreeObjects(_selection); showCurrentPdrObject(); } } IStatus sAspect = new Status(IStatus.INFO, Activator.PLUGIN_ID, "Tree item selected: " + selection); //$NON-NLS-1$ _iLogger.log(sAspect); } } }); treeViewer.addDoubleClickListener(new IDoubleClickListener() { @Override public void doubleClick(final DoubleClickEvent event) { IStructuredSelection selection = (IStructuredSelection) event.getSelection(); Object obj = selection.getFirstElement(); TreeNode tn = (TreeNode) obj; if (tn != null && tn.hasChildren()) { treeViewer.setExpandedState(tn, !treeViewer.getExpandedState(tn)); } } }); } @Override public final int computePreferredSize(final boolean width, final int availableParallel, final int availablePerpendicular, final int preferredResult) { return 350; } /** * Creates the actions. */ @SuppressWarnings("unchecked") protected final void createActions() { _openAspectsInNewTap = new Action(NLMessages.getString("View_action_open_aspects_new_tab")) { @Override public void run() { TreeViewer viewer = (TreeViewer) _tabFolderLeft.getSelection().getData("viewer"); //$NON-NLS-1$ // System.out.println("TreeViewer " + viewer); //$NON-NLS-1$ // System.out.println("Selection " + viewer.getSelection()); //$NON-NLS-1$ if (viewer != null) { IStructuredSelection selection = (IStructuredSelection) viewer.getSelection(); Object obj = selection.getFirstElement(); TreeNode tn = (TreeNode) obj; if (tn.getPdrObject() != null) { PdrObject pdrO = tn.getPdrObject(); if (pdrO != null && pdrO.getPdrId() != null) { Event event = new Event(); event.data = pdrO.getPdrId().toString(); IHandlerService handlerService = (IHandlerService) PlatformUI.getWorkbench().getService( IHandlerService.class); try { handlerService.executeCommand( "org.bbaw.pdr.ae.view.main.commands.OpenAdditionalAspectsView", event); //$NON-NLS-1$ } catch (ExecutionException e) { e.printStackTrace(); } catch (NotDefinedException e) { e.printStackTrace(); } catch (NotEnabledException e) { e.printStackTrace(); } catch (NotHandledException e) { e.printStackTrace(); } } } } _openAspectsInNewTap.setChecked(false); } }; _openAspectsInNewTap.setChecked(false); _openAspectsInNewTap.setImageDescriptor(_imageReg.getDescriptor(IconsInternal.ASPECTS)); _openReferencesInNewTap = new Action(NLMessages.getString("View_action_open_references_new_tab")) { @Override public void run() { TreeViewer viewer = (TreeViewer) _tabFolderLeft.getSelection().getData("viewer"); //$NON-NLS-1$ // System.out.println("TreeViewer " + viewer); //$NON-NLS-1$ // System.out.println("Selection " + viewer.getSelection()); //$NON-NLS-1$ if (viewer != null) { IStructuredSelection selection = (IStructuredSelection) viewer.getSelection(); Object obj = selection.getFirstElement(); TreeNode tn = (TreeNode) obj; if (tn.getPdrObject() != null) { PdrObject pdrO = tn.getPdrObject(); if (pdrO != null && pdrO.getPdrId() != null) { Event event = new Event(); event.data = pdrO.getPdrId().toString(); IHandlerService handlerService = (IHandlerService) PlatformUI.getWorkbench().getService( IHandlerService.class); try { handlerService.executeCommand( "org.bbaw.pdr.ae.view.main.commands.OpenAdditionalReferencesView", event); //$NON-NLS-1$ } catch (ExecutionException e) { e.printStackTrace(); } catch (NotDefinedException e) { e.printStackTrace(); } catch (NotEnabledException e) { e.printStackTrace(); } catch (NotHandledException e) { e.printStackTrace(); } } } } _openReferencesInNewTap.setChecked(false); } }; _openReferencesInNewTap.setChecked(false); _openReferencesInNewTap.setImageDescriptor(_imageReg.getDescriptor(IconsInternal.REFERENCES)); _loadQuery = new Action(NLMessages.getString("View_action_load_query")) { @Override public void run() { _loadQuery.setChecked(false); PdrQuery query = (PdrQuery) _tabFolderLeft.getItem(_tabFolderLeft.getSelectionIndex()).getData("query"); //$NON-NLS-1$ if (query != null) { Event event = new Event(); event.data = query.clone(); IHandlerService handlerService = (IHandlerService) PlatformUI.getWorkbench().getService( IHandlerService.class); if (query.getSearchLevel() == 0) { // System.out.println("load query in simple search " + query.getType()); //$NON-NLS-1$ _comboTree.select(query.getType()); if (query.getCriterias() != null && query.getCriterias().firstElement() != null) { String crit0 = query.getCriterias().firstElement().getCrit0(); // System.out.println("crit0 " + crit0); //$NON-NLS-1$ if (crit0 == null) { crit0 = "ALL"; //$NON-NLS-1$ } IAEPresentable ci = ((HashMap<String, IAEPresentable>) _comboSemanticViewer.getInput()) .get(crit0); if (ci == null) { ci = new ConfigItem(crit0, crit0); _comboSemanticViewer.add(ci); } IStructuredSelection selection = new StructuredSelection(ci); _comboSemanticViewer.setSelection(selection); if (query.getCriterias().firstElement().getSearchText() != null) { _searchText.setText(query.getCriterias().firstElement().getSearchText()); } else { _searchText.setText(""); //$NON-NLS-1$ } } else { _searchText.setText(""); //$NON-NLS-1$ IAEPresentable ci = ((HashMap<String, IAEPresentable>) _comboSemanticViewer.getInput()) .get("ALL"); //$NON-NLS-1$ if (ci == null) { ci = new ConfigItem("ALL", "ALL"); //$NON-NLS-1$ //$NON-NLS-2$ _comboSemanticViewer.add(ci); } IStructuredSelection selection = new StructuredSelection(ci); _comboSemanticViewer.setSelection(selection); } } else if (query.getSearchLevel() == 1) { try { handlerService.executeCommand( "org.bbaw.pdr.ae.view.main.commands.OpenAdvancedSearchDialog", event); //$NON-NLS-1$ } catch (ExecutionException e) { e.printStackTrace(); } catch (NotDefinedException e) { e.printStackTrace(); } catch (NotEnabledException e) { e.printStackTrace(); } catch (NotHandledException e) { e.printStackTrace(); } } else if (query.getSearchLevel() == 2) { try { handlerService.executeCommand( "org.bbaw.pdr.ae.view.main.commands.OpenExpertSearchDialog", event); //$NON-NLS-1$ } catch (ExecutionException e) { e.printStackTrace(); } catch (NotDefinedException e) { e.printStackTrace(); } catch (NotEnabledException e) { e.printStackTrace(); } catch (NotHandledException e) { e.printStackTrace(); } } } } }; _loadQuery.setChecked(false); _loadQuery.setImageDescriptor(_imageReg.getDescriptor(IconsInternal.SEARCH)); _selectAllChildNods = new Action(NLMessages.getString("Views_treeview_select_all_children")) { @Override public void run() { TreeViewer viewer = (TreeViewer) _tabFolderLeft.getSelection().getData("viewer"); //$NON-NLS-1$ // System.out.println("TreeViewer " + viewer); //$NON-NLS-1$ // System.out.println("Selection " + viewer.getSelection()); //$NON-NLS-1$ if (viewer != null) { ArrayList<PdrObject> helpObjs = new ArrayList<PdrObject>(); IStructuredSelection selection = (IStructuredSelection) viewer.getSelection(); Object[] objs = selection.toArray(); TreeNode[] tns = new TreeNode[objs.length]; for (int i = 0; i < objs.length; i++) { tns[i] = (TreeNode) objs[i]; } for (int i = 0; i < tns.length; i++) { if (tns[i].getPdrObject() != null) { helpObjs.add(tns[i].getPdrObject()); } if (tns[i].hasChildren()) { for (TreeNode c : tns[i].getChildren()) { if (c.getPdrObject() != null) { helpObjs.add(c.getPdrObject()); } if (c.hasChildren()) { for (TreeNode cc : c.getChildren()) { if (cc.getPdrObject() != null) { helpObjs.add(cc.getPdrObject()); } if (cc.hasChildren()) { for (TreeNode ccc : cc.getChildren()) { if (ccc.getPdrObject() != null) { helpObjs.add(ccc.getPdrObject()); } if (ccc.hasChildren()) { for (TreeNode cccc : ccc.getChildren()) { if (cccc.getPdrObject() != null) { helpObjs.add(cccc.getPdrObject()); } } } } } } } } } } System.out.println("tree all children size: " + helpObjs.size()); _selection = helpObjs.toArray(new PdrObject[helpObjs.size()]); StructuredSelection sel = null; if (_selection != null) { sel = new StructuredSelection(_selection); } selectionChanged(Treeview.this, sel); _facade.setCurrentTreeObjects(_selection); setStatusLine(helpObjs.size() + " " + NLMessages.getString("View_objects_selected")); } _selectAllChildNods.setChecked(false); } }; _selectAllChildNods.setChecked(false); _selectAllChildNods.setImageDescriptor(_imageReg.getDescriptor(IconsInternal.TREE)); } /** * Creates the menus. * @param control the control */ protected final void createMenus(final Control control) { MenuManager menuMgr = new MenuManager(); menuMgr.add(new GroupMarker(IWorkbenchActionConstants.MB_ADDITIONS)); menuMgr.setRemoveAllWhenShown(true); menuMgr.addMenuListener(new IMenuListener() { @Override public void menuAboutToShow(final IMenuManager mgr) { fillMenu(mgr); } }); Menu menu = menuMgr.createContextMenu(control); fillMenu(menuMgr); control.setMenu(menu); getSite().registerContextMenu(menuMgr, Treeview.this); } @Override public final void createPartControl(final Composite parent) { parent.setLayout(new GridLayout()); _pdrQuery = new PdrQuery(); _criteria = new Criteria(); getSite().getPage().addSelectionListener(this); getSite().setSelectionProvider(this); _facade.addObserver(this); _sashFormMain = new SashForm(parent, SWT.VERTICAL); _sashFormMain.setLayout(new GridLayout()); _sashFormMain.setLayoutData(new GridData(GridData.FILL_BOTH)); { _currentObjectGroup = new Group(_sashFormMain, SWT.SHADOW_IN); _currentObjectGroup.setText(""); //$NON-NLS-1$ _currentObjectGroup.setLayout(new GridLayout()); ((GridLayout) _currentObjectGroup.getLayout()).numColumns = 2; _currentObjectGroup.setLayoutData(new GridData()); _currentObjectText = new Text(_currentObjectGroup, SWT.MULTI | SWT.WRAP | SWT.V_SCROLL | SWT.READ_ONLY); _currentObjectText.setBackground(Display.getDefault().getSystemColor(SWT.COLOR_WHITE)); _currentObjectText.setLayoutData(new GridLayout()); _currentObjectText.setLayoutData(new GridData()); ((GridData) _currentObjectText.getLayoutData()).horizontalAlignment = SWT.FILL; ((GridData) _currentObjectText.getLayoutData()).verticalAlignment = SWT.FILL; ((GridData) _currentObjectText.getLayoutData()).horizontalSpan = 2; ((GridData) _currentObjectText.getLayoutData()).grabExcessHorizontalSpace = true; ((GridData) _currentObjectText.getLayoutData()).grabExcessVerticalSpace = true; if (_advanced) { _addAspectButton = new Button(_currentObjectGroup, SWT.PUSH); _addAspectButton.setText(NLMessages.getString("View_add_new_aspect")); //$NON-NLS-1$ _addAspectButton.setToolTipText(NLMessages.getString("View_add_new_aspect_tooltip")); //$NON-NLS-1$ _addAspectButton.setLayoutData(new GridData()); ((GridData) _addAspectButton.getLayoutData()).horizontalAlignment = SWT.LEFT; ((GridData) _addAspectButton.getLayoutData()).horizontalSpan = 2; _addAspectButton.setEnabled(false); _addAspectButton.setImage(_imageReg.get(IconsInternal.ASPECT_ADD_SAME_PERSON)); _addAspectButton.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(final SelectionEvent event) { IHandlerService handlerService = (IHandlerService) PlatformUI.getWorkbench().getService( IHandlerService.class); try { handlerService.executeCommand("org.bbaw.pdr.ae.view.main.commands.AddNewAspect", null); //$NON-NLS-1$ } catch (ExecutionException e) { e.printStackTrace(); } catch (NotDefinedException e) { e.printStackTrace(); } catch (NotEnabledException e) { e.printStackTrace(); } catch (NotHandledException e) { e.printStackTrace(); } } }); // SelectionListener _addSimilarAspectButton = new Button(_currentObjectGroup, SWT.PUSH); _addSimilarAspectButton.setText(NLMessages.getString("View_add_similar_aspect")); _addSimilarAspectButton.setToolTipText(NLMessages.getString("View_add_similar_aspect_tooltip")); //$NON-NLS-1$ _addSimilarAspectButton.setLayoutData(new GridData()); ((GridData) _addSimilarAspectButton.getLayoutData()).horizontalSpan = 2; ((GridData) _addSimilarAspectButton.getLayoutData()).horizontalAlignment = SWT.LEFT; _addSimilarAspectButton.setEnabled(false); _addSimilarAspectButton.setImage(_imageReg.get(IconsInternal.ASPECT_ADD_SAME_SOURCE)); _addSimilarAspectButton.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(final SelectionEvent event) { IHandlerService handlerService = (IHandlerService) PlatformUI.getWorkbench().getService( IHandlerService.class); try { handlerService.executeCommand("org.bbaw.pdr.ae.view.main.commands.AddSimilarAspect", null); //$NON-NLS-1$ } catch (ExecutionException e) { e.printStackTrace(); } catch (NotDefinedException e) { e.printStackTrace(); } catch (NotEnabledException e) { e.printStackTrace(); } catch (NotHandledException e) { e.printStackTrace(); } } }); } { { _groupTree = new Group(_sashFormMain, SWT.SHADOW_IN); _groupTree.setText(NLMessages.getString("Treeview_criteriaForTree")); //$NON-NLS-1$ _groupTree.setLayout(new GridLayout()); ((GridLayout) _groupTree.getLayout()).numColumns = 4; ((GridLayout) _groupTree.getLayout()).makeColumnsEqualWidth = false; _groupTree.setLayoutData(new GridData()); { Label treeSearchLabel = new Label(_groupTree, SWT.NONE); treeSearchLabel.setText(NLMessages.getString("Treeview_searchFor")); //$NON-NLS-1$ treeSearchLabel.setLayoutData(new GridData()); ((GridData) treeSearchLabel.getLayoutData()).horizontalSpan =2; _comboTree = new Combo(_groupTree, SWT.READ_ONLY); _comboTree.setLayoutData(new GridData()); ((GridData) _comboTree.getLayoutData()).horizontalAlignment = SWT.FILL; ((GridData) _comboTree.getLayoutData()).grabExcessHorizontalSpace = true; ((GridData) _comboTree.getLayoutData()).horizontalSpan = 2; _comboTreeViewer = new ComboViewer(_comboTree); _comboTreeViewer.setContentProvider(new ArrayContentProvider()); _comboTreeViewer.setLabelProvider(new LabelProvider() { @Override public String getText(final Object element) { String str = (String) element; return NLMessages.getString("Treeview_searchTrees_" + str); //$NON-NLS-1$ } }); String[] trees = new String[] {"aspects", //$NON-NLS-1$ "persons", //$NON-NLS-1$ "references", //$NON-NLS-1$ "faceted-persons", //$NON-NLS-1$ "faceted-aspects", //$NON-NLS-1$ "faceted-references"}; //$NON-NLS-1$ _comboTreeViewer.setInput(trees); _comboTree.select(1); final Label treeSemanticLabel = new Label(_groupTree, SWT.NONE); _comboTreeViewer.addSelectionChangedListener(new ISelectionChangedListener() { @Override public void selectionChanged(final SelectionChangedEvent event) { ISelection iSelection = event.getSelection(); Object obj = ((IStructuredSelection) iSelection).getFirstElement(); String str = (String) obj; if (str != null) { _pdrQuery.setType(_comboTree.getSelectionIndex()); _pdrQuery.setCriterias(null); _criteria.setFuzzy(true); _criteria.setType("tagging"); //$NON-NLS-1$ // System.out.println(_comboTree.getSelectionIndex() + " selected: " //$NON-NLS-1$ // + str); //$NON-NLS-1$ if (_comboTree.getSelectionIndex() == 2) { _facetPreferenceButton.setEnabled(false); ((AEConfigPresentableContentProvider) _comboSemanticViewer.getContentProvider()) .setAddALL(true); treeSemanticLabel.setText(NLMessages.getString("View_genre")); if (_facade.getAllGenres() != null && !_facade.getAllGenres().isEmpty()) { _comboSemanticViewer.setInput(_facade.getAllGenres()); } } else if (_comboTree.getSelectionIndex() == 3) { _facetPreferenceButton.setEnabled(true); ((AEConfigPresentableContentProvider) _comboSemanticViewer.getContentProvider()) .setAddALL(false); _criteria.setCrit0(null); _pdrQuery.setKey("content"); //$NON-NLS-1$ treeSemanticLabel.setText(NLMessages.getString("View_facets")); if (_facade.getFacetProposals() != null && !_facade.getFacetProposals().isEmpty()) { _comboSemanticViewer.setInput(_facade.getFacetProposals()); } else { _comboSemanticViewer.setInput(null); MessageDialog messageDialog = new MessageDialog( _parentShell, NLMessages.getString("View_message_person_facet_empty"), null, NLMessages.getString("View_message_person_facet_customize"), MessageDialog.INFORMATION, new String[] { NLMessages .getString("View_message_customize_person_facet_proposals"), NLMessages.getString("Handler_cancel")}, 0); int returnCode = messageDialog.open(); if (returnCode == 0) { openPreferencePage("org.bbaw.pdr.ae.view.main.preferences.FacetedSearch"); if (_facade.getFacetProposals() != null && !_facade.getFacetProposals().isEmpty()) { _comboSemanticViewer.setInput(_facade.getFacetProposals()); } } } } else if (_comboTree.getSelectionIndex() == 4) { _facetPreferenceButton.setEnabled(true); ((AEConfigPresentableContentProvider) _comboSemanticViewer.getContentProvider()) .setAddALL(false); _criteria.setCrit0(null); _pdrQuery.setKey("content"); //$NON-NLS-1$ treeSemanticLabel.setText(NLMessages.getString("View_facets")); if (_facade.getAspectFacetProposals() != null && !_facade.getAspectFacetProposals().isEmpty()) { _comboSemanticViewer.setInput(_facade.getAspectFacetProposals()); } else { _comboSemanticViewer.setInput(null); MessageDialog messageDialog = new MessageDialog( _parentShell, NLMessages.getString("View_message_aspect_facet_empty"), null, NLMessages.getString("View_message_aspect_facet_customize"), MessageDialog.INFORMATION, new String[] { NLMessages .getString("View_message_customize_aspect_facet_proposals"), NLMessages.getString("Handler_cancel")}, 0); int returnCode = messageDialog.open(); if (returnCode == 0) { openPreferencePage("org.bbaw.pdr.ae.view.main.preferences.FacetedAspectSearch"); if (_facade.getAspectFacetProposals() != null && !_facade.getAspectFacetProposals().isEmpty()) { _comboSemanticViewer.setInput(_facade.getAspectFacetProposals()); } } } } else if (_comboTree.getSelectionIndex() == 5) { _facetPreferenceButton.setEnabled(false); ((AEConfigPresentableContentProvider) _comboSemanticViewer.getContentProvider()) .setAddALL(false); _criteria.setCrit0(null); treeSemanticLabel.setText(NLMessages.getString("View_facets")); HashMap<String, ConfigItem> refFacetsConfigItems = new HashMap<String, ConfigItem>( _refFacets.length); for (int i = 0; i < _refFacets.length; i++) { ConfigItem ci = new ConfigItem(); ci.setValue(_refFacets[i]); ci.setLabel(NLMessages.getString("Editor_" + ci.getValue())); //$NON-NLS-1$ refFacetsConfigItems.put(ci.getValue(), ci); } _comboSemanticViewer.setInput(refFacetsConfigItems); } else { ((AEConfigPresentableContentProvider) _comboSemanticViewer.getContentProvider()) .setAddALL(true); treeSemanticLabel.setText(NLMessages.getString("View_semantic")); if (_facade.getAllSemantics() != null && !_facade.getAllSemantics().isEmpty()) { _comboSemanticViewer.setInput(_facade.getAllSemantics()); } _facetPreferenceButton.setEnabled(false); } _comboTag.select(0); } } }); _pdrQuery.setType(_comboTree.getSelectionIndex()); _pdrQuery.setCriterias(null); _criteria.setType("tagging"); //$NON-NLS-1$ _criteria.setFuzzy(true); treeSemanticLabel.setText(NLMessages.getString("Treeview_semantic_genre")); //$NON-NLS-1$ treeSemanticLabel.setLayoutData(new GridData()); _facetPreferenceButton = new Button(_groupTree, SWT.READ_ONLY); _facetPreferenceButton.setLayoutData(new GridData()); ((GridData) _facetPreferenceButton.getLayoutData()).horizontalAlignment = SWT.RIGHT; _facetPreferenceButton.setImage(_imageReg.get(IconsInternal.PREFERENCES)); _facetPreferenceButton.setEnabled(false); _facetPreferenceButton.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(final SelectionEvent event) { ArrayList<Parameterization> parameters = new ArrayList<Parameterization>(); IParameter iparam = null; // get the command from plugin.xml IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow(); ICommandService cmdService = (ICommandService) window.getService(ICommandService.class); Command cmd = cmdService.getCommand("org.eclipse.ui.window.preferences"); // get the parameter try { iparam = cmd.getParameter("preferencePageId"); } catch (NotDefinedException e1) { e1.printStackTrace(); } String pageID = null; switch (_pdrQuery.getType()) { case 3: pageID = "org.bbaw.pdr.ae.view.main.preferences.FacetedSearch"; break; case 4: pageID = "org.bbaw.pdr.ae.view.main.preferences.FacetedAspectSearch"; break; default: break; } if (pageID != null) { Parameterization params = new Parameterization(iparam, pageID); parameters.add(params); // build the parameterized command ParameterizedCommand pc = new ParameterizedCommand(cmd, parameters .toArray(new Parameterization[parameters.size()])); // execute the command try { IHandlerService handlerService = (IHandlerService) window .getService(IHandlerService.class); handlerService.executeCommand(pc, null); } catch (ExecutionException e) { e.printStackTrace(); } catch (NotDefinedException e) { e.printStackTrace(); } catch (NotEnabledException e) { e.printStackTrace(); } catch (NotHandledException e) { e.printStackTrace(); } } } }); // SelectionListener _comboTag = new Combo(_groupTree, SWT.READ_ONLY); _comboTag.setLayoutData(new GridData()); ((GridData) _comboTag.getLayoutData()).horizontalAlignment = SWT.FILL; ((GridData) _comboTag.getLayoutData()).grabExcessHorizontalSpace = true; ((GridData) _comboTag.getLayoutData()).horizontalSpan = 2; _comboSemanticViewer = new ComboViewer(_comboTag); _comboSemanticViewer.setContentProvider(new AEConfigPresentableContentProvider()); _comboSemanticViewer.setLabelProvider(new AEConfigPresentableLabelProvider()); ((AEConfigPresentableContentProvider) _comboSemanticViewer.getContentProvider()) .setAddALL(true); if (_facade.getAllSemantics() != null && !_facade.getAllSemantics().isEmpty()) { _comboSemanticViewer.setInput(_facade.getAllSemantics()); _comboTag.select(0); _criteria.setCrit0(_comboTag.getItem(0)); } _comboSemanticViewer.addSelectionChangedListener(new ISelectionChangedListener() { @Override public void selectionChanged(final SelectionChangedEvent event) { ISelection iSelection = event.getSelection(); Object obj = ((IStructuredSelection) iSelection).getFirstElement(); IAEPresentable cp = (IAEPresentable) obj; if (cp != null) { _criteria.setType("tagging"); //$NON-NLS-1$ _criteria.setFuzzy(true); if (_comboTree.getSelectionIndex() == 3 || _comboTree.getSelectionIndex() == 4) { _criteria.setCrit0(null); ConfigItem ci = (ConfigItem) cp; if (ci.getPos() != null && ci.getPos().equals("type")) //$NON-NLS-1$ { try { String[] facetStrings = _mainSearcher .getFacets( "tagging", ci.getParent().getValue().substring(5), ci.getValue(), null, //$NON-NLS-1$ null); setQueryFacets(_pdrQuery, facetStrings); } catch (Exception e1) { e1.printStackTrace(); } } else if (ci.getPos() != null && ci.getPos().equals("subtype")) //$NON-NLS-1$ { try { String[] facetStrings = _mainSearcher.getFacets( "tagging", ((ConfigItem) ci.getParent()).getParent().getValue() .substring(5), ci.getParent().getValue(), ci.getValue(), //$NON-NLS-1$ null); setQueryFacets(_pdrQuery, facetStrings); } catch (Exception e1) { e1.printStackTrace(); } } else if (ci.getPos() != null && ci.getPos().equals("role")) //$NON-NLS-1$ { try { String[] facetStrings = _mainSearcher.getFacets("tagging", ((ConfigItem) ((ConfigItem) ci.getParent()).getParent()) .getParent().getValue().substring(5), ((ConfigItem) ci .getParent()).getParent().getValue(), ci.getParent() .getValue(), ci.getValue()); //$NON-NLS-1$ setQueryFacets(_pdrQuery, facetStrings); } catch (Exception e1) { e1.printStackTrace(); } } // try { // _pdrQuery.setFacets(_mainSearcher.getFacets("tagging", // "name", cp.getValue(), null, null)); // } catch (XQException e) { // e.printStackTrace(); // } _criteria.setCrit0("ALL"); //$NON-NLS-1$ } else if (_comboTree.getSelectionIndex() == 5) { _criteria.setCrit0(null); ConfigItem ci = (ConfigItem) cp; String type = null; String[] referenceFacets = null; if (ci.getValue().equals("name")) //$NON-NLS-1$ { ci.setValue("namePart"); //$NON-NLS-1$ type = "family"; //$NON-NLS-1$ } try { referenceFacets = _mainSearcher.getFacets( "reference", ci.getValue(), type, null, null); //$NON-NLS-1$ } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } if (ci.getValue().equals("genre")) //$NON-NLS-1$ { _pdrQuery.setKey("genre"); //$NON-NLS-1$ } else { _pdrQuery.setKey(null); } setQueryFacets(_pdrQuery, referenceFacets); } else if (cp.getValue() == null || cp.getValue().equals("ALL") || cp.getLabel() == null || cp.getLabel().equals("ALL")) //$NON-NLS-1$ //$NON-NLS-2$ { _criteria.setCrit0(null); } else { _criteria.setCrit0(cp.getValue()); } } } }); // _comboTag.addSelectionListener(new SelectionAdapter() // { // public void widgetSelected(SelectionEvent se) // { // _criteria.setType("tagging"); //$NON-NLS-1$ // _criteria.setFuzzy(true); // // // if facet person search set facets. // if (_pdrQuery.getType() == 3) // { // try { // _pdrQuery.setFacets(_mainSearcher.getFacets("tagging", // "name", // _comboTag.getItem(_comboTag.getSelectionIndex()), // null, null)); // } catch (XQException e) { // e.printStackTrace(); // } // _criteria.setCrit0("ALL"); // // } // else // { // _criteria.setCrit0(_comboTag.getItem(_comboTag.getSelectionIndex())); // } // // System.out.println(_comboTag.getSelectionIndex() //// + " selected: " //$NON-NLS-1$ // // + // _comboTag.getItem(_comboTag.getSelectionIndex())); // } // }); //SelectionListener _searchText = new Text(_groupTree, SWT.BORDER); _searchText.setLayoutData(new GridData()); _searchText.setLayoutData(new GridData()); ((GridData) _searchText.getLayoutData()).horizontalAlignment = SWT.FILL; ((GridData) _searchText.getLayoutData()).grabExcessHorizontalSpace = true; ((GridData) _searchText.getLayoutData()).horizontalSpan = 4; ControlDecoration decoValIdInfo = new ControlDecoration(_searchText, SWT.LEFT | SWT.BOTTOM); decoValIdInfo .setDescriptionText("Use ? as wildcard for a single character.\nUse * for any number of characters."); decoValIdInfo.setImage(FieldDecorationRegistry.getDefault() .getFieldDecoration(FieldDecorationRegistry.DEC_INFORMATION).getImage()); decoValIdInfo.setShowOnlyOnFocus(false); _searchText.addKeyListener(new KeyListener() { @Override public void keyPressed(final KeyEvent e) { if (e.keyCode == SWT.CR) { search(); } } @Override public void keyReleased(final KeyEvent e) { // TODO Auto-generated method stub } }); if (_advanced) { Button advancedTreeButton = new Button(_groupTree, SWT.PUSH); advancedTreeButton.setText(NLMessages.getString("Treeview_advanced")); //$NON-NLS-1$ advancedTreeButton .setToolTipText(NLMessages.getString("View_open_advanced_search_tooltip")); advancedTreeButton.setImage(_imageReg.get(IconsInternal.SEARCH_ADVANCED)); advancedTreeButton.setLayoutData(new GridData()); ((GridData) advancedTreeButton.getLayoutData()).horizontalAlignment = SWT.LEFT; advancedTreeButton.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(final SelectionEvent event) { IHandlerService handlerService = (IHandlerService) PlatformUI.getWorkbench() .getService(IHandlerService.class); try { handlerService.executeCommand( "org.bbaw.pdr.ae.view.main.commands.OpenAdvancedSearchDialog", null); //$NON-NLS-1$ } catch (ExecutionException e) { e.printStackTrace(); } catch (NotDefinedException e) { e.printStackTrace(); } catch (NotEnabledException e) { e.printStackTrace(); } catch (NotHandledException e) { e.printStackTrace(); } } }); Button expertTreeButton = new Button(_groupTree, SWT.PUSH); expertTreeButton.setText(NLMessages.getString("Treeview_expert")); //$NON-NLS-1$ expertTreeButton.setToolTipText(NLMessages.getString("View_open_expert_search_tooltip")); expertTreeButton.setImage(_imageReg.get(IconsInternal.SEARCH_EXPERT)); expertTreeButton.setLayoutData(new GridData()); ((GridData) expertTreeButton.getLayoutData()).horizontalAlignment = SWT.LEFT; ((GridData) expertTreeButton.getLayoutData()).horizontalSpan = 2; expertTreeButton.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(final SelectionEvent event) { IHandlerService handlerService = (IHandlerService) PlatformUI.getWorkbench() .getService(IHandlerService.class); try { handlerService.executeCommand( "org.bbaw.pdr.ae.view.main.commands.OpenExpertSearchDialog", null); //$NON-NLS-1$ } catch (ExecutionException e) { e.printStackTrace(); } catch (NotDefinedException e) { e.printStackTrace(); } catch (NotEnabledException e) { e.printStackTrace(); } catch (NotHandledException e) { e.printStackTrace(); } } }); } _treeButton = new Button(_groupTree, SWT.PUSH); _treeButton.setText(NLMessages.getString("View_search")); //$NON-NLS-1$ _treeButton.setToolTipText(NLMessages.getString("View_create_tree_tooltip")); _treeButton.setLayoutData(new GridData()); ((GridData) _treeButton.getLayoutData()).horizontalAlignment = SWT.RIGHT; ((GridData) _treeButton.getLayoutData()).horizontalSpan = 1; _treeButton.setImage(_imageReg.get(IconsInternal.SEARCH)); _treeButton.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(final SelectionEvent event) { search(); } }); // SelectionListener } // _groupTree } } buildTabFolderLeft(); _sashFormMain.setWeights(new int[] {1, 4}); } } /** * creates new TabItem for TreeBuilder in which the newly generated Tree is * beeing shown. This method is separated from the TreeBuilder itself in * order to pass the Treeviewermethod later to a separate thread. * @param tabFolderLeft tabFolder * @param name name */ @SuppressWarnings("unused") private void createTabItem(final TabFolder tabFolderLeft, final String name) { TabItem tabItemLowerLeftPersonen = new TabItem(tabFolderLeft, SWT.NONE); tabItemLowerLeftPersonen.setText(name); tabFolderLeft.setSelection(tabItemLowerLeftPersonen); // setBulb(); Tree tree = new Tree(_tabFolderLeft, SWT.BORDER); tabItemLowerLeftPersonen.setControl(tree); PlatformUI.getWorkbench().getHelpSystem().setHelp(tree, "org.bbaw.pdr.ae.help.objectsTree"); //$NON-NLS-1$ // buildTree(tree); } /** * Creates the tree viewer. * @param tabFolderLeft the _tab folder left * @param key the key */ private void createTreeViewer(final CTabFolder tabFolderLeft, final String key) { CTabItem tabItemLowerLeftPersonen; Tree tree; String type = ""; if (key.equals("allPersons")) //$NON-NLS-1$ { tabItemLowerLeftPersonen = new CTabItem(tabFolderLeft, SWT.NONE); tabItemLowerLeftPersonen.setText(NLMessages.getString("Treeview_all_persons")); tabItemLowerLeftPersonen.setData("key", key); //$NON-NLS-1$ tabItemLowerLeftPersonen.setData("type", "pdrPo"); //$NON-NLS-1$ tabFolderLeft.setSelection(tabItemLowerLeftPersonen); // setBulb(); tabItemLowerLeftPersonen.setImage(_imageReg.get(IconsInternal.PERSONS)); tree = new Tree(tabFolderLeft, SWT.BORDER | SWT.MULTI); tabItemLowerLeftPersonen.setControl(tree); PlatformUI.getWorkbench().getHelpSystem().setHelp(tree, "org.bbaw.pdr.ae.help.objectsTree"); //$NON-NLS-1$ _allPersonsTreeViewer = new TreeViewer(tree); _allPersonsTreeViewer.setData("key", 1); //$NON-NLS-1$ _allPersonsTreeViewer.setData("tab", tabItemLowerLeftPersonen); //$NON-NLS-1$ tabItemLowerLeftPersonen.setData("viewer", _allPersonsTreeViewer); //$NON-NLS-1$ _allPersonsTreeViewer.setContentProvider(new TreeContentProvider()); _allPersonsTreeViewer.setLabelProvider(new TreeLabelProvider()); _allPersonsTreeViewer.setUseHashlookup(true); _treeViewerMap.put(key, _allPersonsTreeViewer); if (!_facade.getLazyLoading()) { if (_facade.getAllPersons() == null || _facade.getAllPersons().isEmpty()) { UIJob job = new UIJob(key) { @Override public IStatus runInUIThread(final IProgressMonitor monitor) { try { _facade.setAllPersons(_mainSearcher.searchAllPersons()); } catch (Exception e) { e.printStackTrace(); } if (monitor.isCanceled()) { return Status.CANCEL_STATUS; } return Status.OK_STATUS; } }; job.setUser(true); job.schedule(); } } else { TreeNode root = new TreeSearchHelper().getTreeNodeAlphabet("pdrPo", 1); _allPersonsTreeViewer.setInput(root); } // Create menu, toolbars, filters, sorters. // createActions(); // createMenus(_allPersonsTreeViewer); // _allPersonsTreeViewer.setInput(_facade.getAllPersons()); buildTree(_allPersonsTreeViewer); setStatusLine("Ready"); } else if (key.equals("allReferences")) //$NON-NLS-1$ { tabItemLowerLeftPersonen = new CTabItem(_tabFolderLeft, SWT.NONE); tabItemLowerLeftPersonen.setText(NLMessages.getString("Treeview_all_references")); tabItemLowerLeftPersonen.setData("key", key); //$NON-NLS-1$ tabItemLowerLeftPersonen.setData("type", "pdrRo"); //$NON-NLS-1$ _tabFolderLeft.setSelection(tabItemLowerLeftPersonen); tabItemLowerLeftPersonen.setImage(_imageReg.get(IconsInternal.REFERENCES)); tree = new Tree(_tabFolderLeft, SWT.BORDER | SWT.MULTI); tabItemLowerLeftPersonen.setControl(tree); PlatformUI.getWorkbench().getHelpSystem().setHelp(tree, "org.bbaw.pdr.ae.help.objectsTree"); //$NON-NLS-1$ _allReferencesTreeViewer = new TreeViewer(tree); _allReferencesTreeViewer.setData("key", 2); //$NON-NLS-1$ _allReferencesTreeViewer.setData("tab", tabItemLowerLeftPersonen); //$NON-NLS-1$ tabItemLowerLeftPersonen.setData("viewer", _allReferencesTreeViewer); //$NON-NLS-1$ if (_facade.getAllReferences() == null || _facade.getAllReferences().isEmpty()) { setStatusLine("Performing Search " + key); UIJob job = new UIJob(key) { @Override public IStatus runInUIThread(final IProgressMonitor monitor) { try { _facade.setAllReferences(_mainSearcher.searchAllReferences()); } catch (Exception e) { e.printStackTrace(); } if (monitor.isCanceled()) { return Status.CANCEL_STATUS; } return Status.OK_STATUS; } }; job.setUser(true); job.schedule(); } _allReferencesTreeViewer.setContentProvider(new TreeContentProvider()); _allReferencesTreeViewer.setLabelProvider(new TreeLabelProvider()); _treeViewerMap.put(key, _allReferencesTreeViewer); // Create menu, toolbars, filters, sorters. // createActions(); // createMenus(_allReferencesTreeViewer); _allReferencesTreeViewer.setInput(_facade.getAllReferences()); buildTree(_allReferencesTreeViewer); setStatusLine("Ready"); } else { tabItemLowerLeftPersonen = new CTabItem(_tabFolderLeft, SWT.CLOSE); tabItemLowerLeftPersonen.setText(key); tabItemLowerLeftPersonen.setData("key", key); //$NON-NLS-1$ _tabFolderLeft.setSelection(tabItemLowerLeftPersonen); tree = new Tree(_tabFolderLeft, SWT.BORDER | SWT.MULTI); tabItemLowerLeftPersonen.setControl(tree); PlatformUI.getWorkbench().getHelpSystem().setHelp(tree, "org.bbaw.pdr.ae.help.objectsTree"); //$NON-NLS-1$ // System.out.println("pdrQeuery type: " +_pdrQuery.getType()); //$NON-NLS-1$ if (_pdrQuery.getType() == 0) { tabItemLowerLeftPersonen.setImage(_imageReg.get(IconsInternal.ASPECTS)); tabItemLowerLeftPersonen.setData("type", "pdrAo"); //$NON-NLS-1$ _treeViewer = new TreeViewer(tree); _treeViewer.setData("key", 0); //$NON-NLS-1$ _treeViewer.setData("tab", tabItemLowerLeftPersonen); //$NON-NLS-1$ tabItemLowerLeftPersonen.setData("viewer", _treeViewer); //$NON-NLS-1$ tabItemLowerLeftPersonen.setData("query", _pdrQuery.clone()); //$NON-NLS-1$ _treeViewer.setContentProvider(new TreeContentProvider()); _treeViewer.setLabelProvider(new TreeLabelProvider()); _treeViewerMap.put(key, _treeViewer); type = "pdrAo"; setStatusLine("Performing Search " + key); UIJob job = new UIJob(_treeViewer.getTree().getDisplay(), key) { @Override public IStatus runInUIThread(final IProgressMonitor monitor) { _searchResult = null; try { _searchResult = _mainSearcher.searchAspects(_pdrQuery, monitor); _treeViewer.setInput(_searchResult); setStatusLine("Ready"); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } if (monitor.isCanceled()) { return Status.CANCEL_STATUS; } return Status.OK_STATUS; } }; job.setUser(true); job.schedule(); } else if (_pdrQuery.getType() == 1) { tabItemLowerLeftPersonen.setImage(_imageReg.get(IconsInternal.PERSONS)); tabItemLowerLeftPersonen.setData("key", key); //$NON-NLS-1$ tabItemLowerLeftPersonen.setData("type", "pdrPo"); //$NON-NLS-1$ _treeViewer = new TreeViewer(tree); _treeViewer.setData("key", 1); //$NON-NLS-1$ _treeViewer.setData("tab", tabItemLowerLeftPersonen); //$NON-NLS-1$ tabItemLowerLeftPersonen.setData("viewer", _treeViewer); //$NON-NLS-1$ tabItemLowerLeftPersonen.setData("query", _pdrQuery.clone()); //$NON-NLS-1$ _treeViewer.setContentProvider(new TreeContentProvider()); _treeViewer.setLabelProvider(new TreeLabelProvider()); _treeViewerMap.put(key, _treeViewer); type = "pdrPo"; setStatusLine("Performing Search " + key); Job job = new Job(key) { @Override protected IStatus run(final IProgressMonitor monitor) { _searchResult = null; try { _searchResult = _mainSearcher.searchPersons(_pdrQuery, monitor); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } if (monitor.isCanceled()) { return Status.CANCEL_STATUS; } UIJob job = new UIJob(_treeViewer.getTree().getDisplay(), "Load Result") { @Override public IStatus runInUIThread(final IProgressMonitor monitor) { _treeViewer.setInput(_searchResult); setStatusLine("Ready"); return Status.OK_STATUS; } }; job.setUser(true); job.schedule(); return Status.OK_STATUS; } }; job.setUser(true); job.schedule(); } else if (_pdrQuery.getType() == 2) { tabItemLowerLeftPersonen.setImage(_imageReg.get(IconsInternal.REFERENCES)); tabItemLowerLeftPersonen.setData("key", key); //$NON-NLS-1$ tabItemLowerLeftPersonen.setData("type", "pdrRo"); //$NON-NLS-1$ _treeViewer = new TreeViewer(tree); _treeViewer.setData("key", 2); //$NON-NLS-1$ _treeViewer.setData("tab", tabItemLowerLeftPersonen); //$NON-NLS-1$ tabItemLowerLeftPersonen.setData("viewer", _treeViewer); //$NON-NLS-1$ tabItemLowerLeftPersonen.setData("query", _pdrQuery.clone()); //$NON-NLS-1$ _treeViewer.setContentProvider(new TreeContentProvider()); _treeViewer.setLabelProvider(new TreeLabelProvider()); _treeViewerMap.put(key, _treeViewer); type = "pdrRo"; setStatusLine("Performing Search " + key); Job job = new Job(key) { @Override protected IStatus run(final IProgressMonitor monitor) { _searchResult = null; try { _searchResult = _mainSearcher.searchReferences(_pdrQuery, monitor); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } if (monitor.isCanceled()) { return Status.CANCEL_STATUS; } UIJob job = new UIJob(_treeViewer.getTree().getDisplay(), "Load Result") { @Override public IStatus runInUIThread(final IProgressMonitor monitor) { _treeViewer.setInput(_searchResult); setStatusLine("Ready"); return Status.OK_STATUS; } }; job.setUser(true); job.schedule(); return Status.OK_STATUS; } }; job.setUser(true); job.schedule(); } else if (_pdrQuery.getType() == 3) { tabItemLowerLeftPersonen.setImage(_imageReg.get(IconsInternal.PERSONS)); tabItemLowerLeftPersonen.setData("key", key); //$NON-NLS-1$ tabItemLowerLeftPersonen.setData("type", "facet"); //$NON-NLS-1$ _treeViewer = new TreeViewer(tree); _treeViewer.setData("key", 3); //$NON-NLS-1$ _treeViewer.setData("tab", tabItemLowerLeftPersonen); //$NON-NLS-1$ tabItemLowerLeftPersonen.setData("viewer", _treeViewer); //$NON-NLS-1$ tabItemLowerLeftPersonen.setData("query", _pdrQuery.clone()); //$NON-NLS-1$ _treeViewer.setContentProvider(new TreeContentProvider()); _treeViewer.setLabelProvider(new TreeLabelProvider()); _treeViewerMap.put(key, _treeViewer); type = "pdrPo"; setStatusLine("Performing Search " + key); // System.out.println("im else teil pers, nun er soll nach facet-person suchen"); //$NON-NLS-1$ Job job = new Job(key) { @Override protected IStatus run(final IProgressMonitor monitor) { int work = 10; if (_pdrQuery.getFacets() != null) { work = _pdrQuery.getFacets().size(); } monitor.beginTask("Searching... Number of Facets: " + work, work); try { _searchResult = _mainSearcher.searchFacetPersons(_pdrQuery, monitor); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } UIJob job = new UIJob(_treeViewer.getTree().getDisplay(), "Load Result") { @Override public IStatus runInUIThread(final IProgressMonitor monitor) { _treeViewer.setInput(_searchResult); setStatusLine("Ready"); return Status.OK_STATUS; } }; job.setUser(true); job.schedule(); return Status.OK_STATUS; } }; job.setUser(true); job.schedule(); } else if (_pdrQuery.getType() == 4) { tabItemLowerLeftPersonen.setImage(_imageReg.get(IconsInternal.ASPECTS)); tabItemLowerLeftPersonen.setData("key", key); //$NON-NLS-1$ tabItemLowerLeftPersonen.setData("type", "facet"); //$NON-NLS-1$ _treeViewer = new TreeViewer(tree); _treeViewer.setData("key", 4); //$NON-NLS-1$ _treeViewer.setData("tab", tabItemLowerLeftPersonen); //$NON-NLS-1$ tabItemLowerLeftPersonen.setData("viewer", _treeViewer); //$NON-NLS-1$ tabItemLowerLeftPersonen.setData("query", _pdrQuery.clone()); //$NON-NLS-1$ _treeViewer.setContentProvider(new TreeContentProvider()); _treeViewer.setLabelProvider(new TreeLabelProvider()); _treeViewerMap.put(key, _treeViewer); type = "pdrAo"; setStatusLine("Performing Search " + key); Job job = new Job(key) { @Override protected IStatus run(final IProgressMonitor monitor) { int work = 10; if (_pdrQuery.getFacets() != null) { work = _pdrQuery.getFacets().size(); } monitor.beginTask("Searching... Number of Facets: " + work, work); try { _searchResult = _mainSearcher.searchFacetAspects(_pdrQuery, monitor); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } UIJob job = new UIJob(_treeViewer.getTree().getDisplay(), "Load Result") { @Override public IStatus runInUIThread(final IProgressMonitor monitor) { _treeViewer.setInput(_searchResult); setStatusLine("Ready"); if (monitor.isCanceled()) { return Status.CANCEL_STATUS; } return Status.OK_STATUS; } }; job.setUser(true); job.schedule(); return Status.OK_STATUS; } }; job.setUser(true); job.schedule(); } else if (_pdrQuery.getType() == 5) { tabItemLowerLeftPersonen.setImage(_imageReg.get(IconsInternal.REFERENCES)); tabItemLowerLeftPersonen.setData("key", key); //$NON-NLS-1$ tabItemLowerLeftPersonen.setData("type", "facet"); //$NON-NLS-1$ _treeViewer = new TreeViewer(tree); _treeViewer.setData("key", 3); //$NON-NLS-1$ _treeViewer.setData("tab", tabItemLowerLeftPersonen); //$NON-NLS-1$ tabItemLowerLeftPersonen.setData("viewer", _treeViewer); //$NON-NLS-1$ tabItemLowerLeftPersonen.setData("query", _pdrQuery.clone()); //$NON-NLS-1$ _treeViewer.setContentProvider(new TreeContentProvider()); _treeViewer.setLabelProvider(new TreeLabelProvider()); _treeViewerMap.put(key, _treeViewer); type = "pdrRo"; setStatusLine("Performing Search " + key); Job job = new Job(key) { @Override protected IStatus run(final IProgressMonitor monitor) { try { _searchResult = _mainSearcher.searchFacetReferences(_pdrQuery, monitor); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } if (monitor.isCanceled()) { return Status.CANCEL_STATUS; } UIJob job = new UIJob(_treeViewer.getTree().getDisplay(), "Load Result") { @Override public IStatus runInUIThread(final IProgressMonitor monitor) { _treeViewer.setInput(_searchResult); setStatusLine("Ready"); return Status.OK_STATUS; } }; job.setUser(true); job.schedule(); return Status.OK_STATUS; } }; job.setUser(true); job.schedule(); } if (_treeViewer.getInput() == null) { _treeViewer.setContentProvider(new TreeContentProvider()); _treeViewer.setLabelProvider(new TreeLabelProvider()); TreeNode tn = new TreeNode("Error", "Error"); //$NON-NLS-1$ //$NON-NLS-2$ tn.addChild(new TreeNode("Error", "Error")); //$NON-NLS-1$ //$NON-NLS-2$ _treeViewer.setInput(tn); } // get the window (which is a IServiceLocator) IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow(); // get the service ISourceProviderService service = (ISourceProviderService) window.getService(ISourceProviderService.class); // get our source provider by querying by the variable name TreeSelectionSourceProvider treeSelectionSourceProvider = (TreeSelectionSourceProvider) service .getSourceProvider(AEPluginIDs.SOURCE_PARAMETER_TREE); // set the value treeSelectionSourceProvider.setTreeSelection(key); treeSelectionSourceProvider.setTreeType(type); treeSelectionSourceProvider.setTreeViewer(_treeViewer); setStatusLine("Ready"); //$NON-NLS-1$ buildTree(_treeViewer); } // XXX anpassen an all person. } @Override public final void dispose() { // ISelectionService selectionService = // (ISelectionService)getSite().getService(ISelectionService.class); // selectionService.removeSelectionListener(this); super.dispose(); } /** * Dispose tab items. */ private void disposeTabItems() { if (_tabFolderLeft != null) { _tabFolderLeft.dispose(); } } /** * Fill menu. * @param rootMenuManager the root menu manager */ protected final void fillMenu(final IMenuManager rootMenuManager) { rootMenuManager.add(_openAspectsInNewTap); rootMenuManager.add(_openReferencesInNewTap); rootMenuManager.add(new Separator()); rootMenuManager.add(_loadQuery); rootMenuManager.add(_selectAllChildNods); rootMenuManager.add(new Separator()); // IMenuManager filterSubmenu = new // MenuManager(NLMessages.getString("View_submenu_filters")); // rootMenuManager.add(filterSubmenu); // filterSubmenu.add(onlyUpdatedObjects); // filterSubmenu.add(onlyNewObjects); // filterSubmenu.add(onlyIncorrectObjects); // switch (key) // { // case 0: // { // filterSubmenu.add(onlyAspectsWithDivergentMarkup); // break; // } // case 1: // { // filterSubmenu.add(onlyPersonConcurrences); // filterSubmenu.add(onlyPersonIdentifiers); // filterSubmenu.add(onlyWithoutPNDPersons); // filterSubmenu.add(onlyWithoutLCCNPersons); // filterSubmenu.add(onlyWithoutVIAFPersons); // filterSubmenu.add(onlyWithoutICCUPersons); // } // // } } @Override public final ISelection getSelection() { if (_tabFolderLeft != null) { CTabItem tab = _tabFolderLeft.getItem(_tabFolderLeft.getSelectionIndex()); if (tab != null) { TreeViewer tv = (TreeViewer) tab.getData("viewer"); Object[] objs = ((IStructuredSelection) tv.getSelection()).toArray(); TreeNode[] tns = new TreeNode[objs.length]; for (int i = 0; i < objs.length; i++) { tns[i] = (TreeNode) objs[i]; } if (tns != null && tns.length > 0) { ArrayList<PdrObject> helpObjs = new ArrayList<PdrObject>(); for (int i = 0; i < tns.length; i++) { if (tns[i].getPdrObject() != null) { helpObjs.add(tns[i].getPdrObject()); } } // else if (tns[i].hasChildren()) // { // for (TreeNode c : tns[i].getChildren()) // { // if (c.getPdrObject() != null) // { // helpObjs.add(c.getPdrObject()); // } // else if (c.hasChildren()) // { // for (TreeNode cc : c.getChildren()) // { // if (cc.getPdrObject() != null) // { // helpObjs.add(cc.getPdrObject()); // } // } // } // } // } // } setStatusLine(helpObjs.size() + " " + NLMessages.getString("View_objects_selected")); _selection = helpObjs.toArray(new PdrObject[helpObjs.size()]); } } if (_selection != null) { StructuredSelection selection = new StructuredSelection(_selection); return selection; } else { return null; } } else { return null; } } @Override public final int getSizeFlags(final boolean width) { return SWT.MIN; } /** * Open in tree viewer. * @param tn the tn */ public final void openInTreeViewer(final TreeNode tn) { if (tn != null) { TreeViewer treeViewer; CTabItem tabItem; String key; if (tn.getId() != null) { key = tn.getId(); } else { key = "clipboard"; } if (_treeViewerMap.containsKey(key)) { treeViewer = _treeViewerMap.get(key); tabItem = (CTabItem) treeViewer.getData("tab"); } else { tabItem = new CTabItem(_tabFolderLeft, SWT.CLOSE); Tree tree = new Tree(_tabFolderLeft, SWT.BORDER | SWT.MULTI); tabItem.setControl(tree); tabItem.setData("type", "clipboard"); //$NON-NLS-1$ PlatformUI.getWorkbench().getHelpSystem().setHelp(tree, "org.bbaw.pdr.ae.help.objectsTree"); //$NON-NLS-1$ treeViewer = new TreeViewer(tree); treeViewer.setUseHashlookup(true); } tabItem.setText(key); tabItem.setData("key", key); //$NON-NLS-1$ // setBulb(); tabItem.setImage(_imageReg.get(IconsInternal.PERSONS)); treeViewer.setData("key", 1); //$NON-NLS-1$ treeViewer.setData("tab", tabItem); //$NON-NLS-1$ tabItem.setData("viewer", treeViewer); //$NON-NLS-1$ treeViewer.setContentProvider(new TreeContentProvider()); treeViewer.setLabelProvider(new TreeLabelProvider()); _treeViewerMap.put(key, treeViewer); // Create menu, toolbars, filters, sorters. createActions(); buildTree(treeViewer); setStatusLine("Ready"); treeViewer.setInput(tn); } } /** * Open preference page. * @param pageId the page id */ protected final void openPreferencePage(final String pageId) { ArrayList<Parameterization> parameters = new ArrayList<Parameterization>(); IParameter iparam = null; // get the command from plugin.xml IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow(); ICommandService cmdService = (ICommandService) window.getService(ICommandService.class); Command cmd = cmdService.getCommand("org.eclipse.ui.window.preferences"); // get the parameter try { iparam = cmd.getParameter("preferencePageId"); } catch (NotDefinedException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } Parameterization params = new Parameterization(iparam, pageId); parameters.add(params); // build the parameterized command ParameterizedCommand pc = new ParameterizedCommand(cmd, parameters.toArray(new Parameterization[parameters .size()])); // execute the command try { IHandlerService handlerService = (IHandlerService) window.getService(IHandlerService.class); handlerService.executeCommand(pc, null); } catch (ExecutionException e) { e.printStackTrace(); } catch (NotDefinedException e) { e.printStackTrace(); } catch (NotEnabledException e) { e.printStackTrace(); } catch (NotHandledException e) { e.printStackTrace(); } } @Override public final void removeSelectionChangedListener(final ISelectionChangedListener listener) { _selectionChangedListeners.remove(listener); } /** * Search. */ protected final void search() { _pdrQuery.setSearchLevel(0); _pdrQuery.setType(_comboTree.getSelectionIndex()); ISelection iSelection = _comboSemanticViewer.getSelection(); Object obj = ((IStructuredSelection) iSelection).getFirstElement(); IAEPresentable cp = (IAEPresentable) obj; if (_pdrQuery.getType() == 3) { _pdrQuery.setCriterias(new Vector<Criteria>(1)); _pdrQuery.getCriterias().add(_criteria); } else if (_pdrQuery.getType() < 3) { if (cp != null) { if (cp.getValue() == null || cp.getValue().equals("ALL") || cp.getLabel() == null || cp.getLabel().equals("ALL")) //$NON-NLS-1$ //$NON-NLS-2$ { _criteria.setCrit0(null); } else { _criteria.setCrit0(cp.getValue()); } } _criteria.setSearchText(_searchText.getText()); _pdrQuery.setCriterias(new Vector<Criteria>(1)); _pdrQuery.getCriterias().add(_criteria); } if (_comboTree.getSelectionIndex() == 3 || _comboTree.getSelectionIndex() == 4) { _criteria.setCrit0(null); ConfigItem ci = (ConfigItem) cp; String[] facetStrings = null; if (ci.getPos().equals("type")) //$NON-NLS-1$ { try { facetStrings = _mainSearcher.getFacets( "tagging", ci.getParent().getValue().substring(5), ci.getValue(), null, //$NON-NLS-1$ null); setQueryFacets(_pdrQuery, facetStrings); } catch (Exception e1) { e1.printStackTrace(); } } else if (ci.getPos().equals("subtype")) //$NON-NLS-1$ { try { facetStrings = _mainSearcher.getFacets("tagging", ((ConfigItem) ci.getParent()).getParent() .getValue().substring(5), ci.getParent().getValue(), ci.getValue(), //$NON-NLS-1$ null); setQueryFacets(_pdrQuery, facetStrings); } catch (Exception e1) { e1.printStackTrace(); } } else if (ci.getPos().equals("role")) //$NON-NLS-1$ { try { facetStrings = _mainSearcher.getFacets("tagging", ((ConfigItem) ((ConfigItem) ci.getParent()) .getParent()).getParent().getValue().substring(5), ((ConfigItem) ci.getParent()) .getParent().getValue(), ci.getParent().getValue(), ci.getValue()); //$NON-NLS-1$ setQueryFacets(_pdrQuery, facetStrings); } catch (Exception e1) { e1.printStackTrace(); } } // try { // _pdrQuery.setFacets(_mainSearcher.getFacets("tagging", "name", // cp.getValue(), null, null)); // } catch (XQException e) { // e.printStackTrace(); // } _criteria.setCrit0("ALL"); //$NON-NLS-1$ _criteria.setSearchText(_searchText.getText()); _pdrQuery.setCriterias(new Vector<Criteria>(1)); _pdrQuery.getCriterias().add(_criteria); // setQueryFacets(_pdrQuery, facetStrings); } else if (_pdrQuery.getType() == 5) { _criteria.setCrit0(null); ConfigItem ci = (ConfigItem) cp; String type = null; String[] referenceFacets = null; if (ci.getValue().equals("name") //$NON-NLS-1$ || ci.getValue().equals("namePart")) //$NON-NLS-1$ { ci.setValue("namePart"); //$NON-NLS-1$ type = "family"; //$NON-NLS-1$ } try { referenceFacets = _mainSearcher.getFacets("reference", ci.getValue(), type, null, null); //$NON-NLS-1$ } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } if (ci.getValue().equals("genre")) //$NON-NLS-1$ { _pdrQuery.setKey("genre"); //$NON-NLS-1$ } else { _pdrQuery.setKey(null); } _pdrQuery.setCriterias(new Vector<Criteria>(1)); _pdrQuery.getCriterias().add(_criteria); setQueryFacets(_pdrQuery, referenceFacets); } _keyCounter++; String key = _comboTree.getItem(_comboTree.getSelectionIndex()) + " " + _keyCounter; createTreeViewer(_tabFolderLeft, key); String message = "Performing Search..."; //$NON-NLS-1$ setStatusLine(message); } /** * Search and build tree. * @param pdrQuery the pdr query */ public final void searchAndBuildTree(final PdrQuery pdrQuery) { this._pdrQuery = pdrQuery; _keyCounter++; String key = _comboTree.getItem(_pdrQuery.getType()) + " " + _keyCounter; //$NON-NLS-1$ // String key = new String(new Integer(_pdrQuery.getType()) + " " + // keyCounter); // _pdrQuery.setKey(key); createTreeViewer(_tabFolderLeft, key); } // //////////////////////// Observer ////////////////////////////////////// @Override public void selectionChanged(final IWorkbenchPart part, final ISelection selection) { } /** * Select tree. * @param treeName the tree name */ public final void selectTree(final String treeName) { if (_treeViewerMap.containsKey(treeName)) { TreeViewer treeViewer; CTabItem tabItem; treeViewer = _treeViewerMap.get(treeName); tabItem = (CTabItem) treeViewer.getData("tab"); _tabFolderLeft.setSelection(tabItem); } } @Override public final void setFocus() { _treeButton.setFocus(); } /** * Sets the pdr query. * @param pdrQuery the new pdr query */ public final void setPdrQuery(final PdrQuery pdrQuery) { this._pdrQuery = pdrQuery; } /** * Sets the query facets. * @param facetQuery the facet query * @param facetStrings the facet strings */ protected final void setQueryFacets(final PdrQuery facetQuery, final String[] facetStrings) { HashMap<String, IAEPresentable> facets = new HashMap<String, IAEPresentable>(facetStrings.length); for (String str : facetStrings) { ConfigItem ci = new ConfigItem(); if (facetQuery.getKey() != null && facetQuery.getKey().equals("genre")) //$NON-NLS-1$ { ReferenceModsTemplate temp = _facade.getReferenceModsTemplates().get(str); if (temp != null) { ci.setLabel(temp.getLabel()); } else { ci.setLabel(str); } } else { ci.setLabel(str); } ci.setValue(str); facets.put(str, ci); // System.out.println("facet " + str); //$NON-NLS-1$ } facetQuery.setFacets(facets); } @Override public void setSelection(final ISelection selection) { // TODO Auto-generated method stub } /** * Sets the status line. * @param message the new status line */ private void setStatusLine(final String message) { // Get the status line and set the text // if (message.trim().length() == 0) // { // Integer i = null; // System.out.println(i.doubleValue()); // } // System.out.println("setStatusLine" + message); IActionBars bars = getViewSite().getActionBars(); bars.getStatusLineManager().setMessage(message); } /** * method shows currently selected person in upper left group. */ private void showCurrentPdrObject() { // delete old content _currentObjectText.setText(""); //$NON-NLS-1$ String label = ""; //$NON-NLS-1$ if (_facade.getCurrentTreeObjects() != null && _facade.getCurrentTreeObjects().length > 0) { IStatus slp = new Status(IStatus.INFO, Activator.PLUGIN_ID, "TreeView current object: " //$NON-NLS-1$ + _facade.getCurrentTreeObjects()[_facade.getCurrentTreeObjects().length - 1].getPdrId().toString()); _iLogger.log(slp); if (_advanced) { _addAspectButton.setEnabled(true); if (!_facade.getLastAspects().isEmpty()) { _addSimilarAspectButton.setEnabled(true); } } } else { if (_advanced) { _addAspectButton.setEnabled(false); _addSimilarAspectButton.setEnabled(false); } } if (_facade.getCurrentTreeObjects() != null && _facade.getCurrentTreeObjects().length > 0 && _facade.getCurrentTreeObjects()[_facade.getCurrentTreeObjects().length - 1] != null) { if (_facade.getCurrentTreeObjects()[_facade.getCurrentTreeObjects().length - 1] instanceof Person) { Person cp = (Person) _facade.getCurrentTreeObjects()[_facade.getCurrentTreeObjects().length - 1]; // System.out.println("currentPerson: " + // Facade.getInstanz().getCurrentPerson()); /* set Text to newly selected person */ label = ""; //$NON-NLS-1$ if (_advanced) { _addAspectButton.setEnabled(true); if (_facade.getCurrentAspect() != null) { _addSimilarAspectButton.setEnabled(true); } } if (cp.getBasicPersonData() != null) { BasicPersonData basicPersonData = cp.getBasicPersonData(); label = label + cp.getDisplayName(); //$NON-NLS-1$ if (!Platform.getPreferencesService().getBoolean(CommonActivator.PLUGIN_ID, "PERSON_DISPLAYNAME_LIFESPAN", false, null)) { if (basicPersonData.getBeginningOfLife() != null && basicPersonData.getBeginningOfLife().getYear() != 0 && basicPersonData.getEndOfLife() != null && basicPersonData.getEndOfLife().getYear() != 0 ) { label += " (" + basicPersonData.getBeginningOfLife().toString(".") + " - " + basicPersonData.getEndOfLife().toString(".") + ")"; } else if (basicPersonData.getBeginningOfLife() != null && basicPersonData.getBeginningOfLife().getYear() != 0 ) { label += " (" + basicPersonData.getBeginningOfLife().toString(".") + "-)"; } else if (basicPersonData.getEndOfLife() != null && basicPersonData.getEndOfLife().getYear() != 0 ) { label += " (-" + basicPersonData.getEndOfLife().toString(".") + ")"; } } if (cp.getPdrId() != null) { label = label + "\n\nID: " + cp.getPdrId().toString(); //$NON-NLS-1$ } if (basicPersonData.getComplexNames().size() > 1) { label = label + "\n\n" + NLMessages.getString("Treeview_namevariants"); //$NON-NLS-1$ //$NON-NLS-2$ Vector<String> helpNameVariants = new Vector<String>(5); for (int i = 1; i < basicPersonData.getComplexNames().size(); i++) { String name = basicPersonData.getComplexNames().get(i).toString(); if (!helpNameVariants.contains(name)) { helpNameVariants.add(name); } } for (String n : helpNameVariants) { label += n + "\n"; } } if (!Platform.getPreferencesService().getBoolean(CommonActivator.PLUGIN_ID, "PERSON_DISPLAYNAME_DESCRIPTION", false, null)) { if (basicPersonData.getDescriptions() != null && !basicPersonData.getDescriptions().isEmpty()) { label = label + "\n\n" + PDRConfigProvider.getSemanticLabel(null, "principalDescription") + ":"; //$NON-NLS-1$ //$NON-NLS-3$ boolean first = true; for (String s : basicPersonData.getDescriptions()) { if (first) { label += " "; } else { label += ", "; } label += s; //$NON-NLS-1$ } } } } else { label = label + "\n\nID: " + cp.getPdrId().toString(); //$NON-NLS-1$ } } else if (_facade.getCurrentTreeObjects()[_facade.getCurrentTreeObjects().length - 1] instanceof ReferenceMods) { ReferenceMods cr = (ReferenceMods) _facade.getCurrentTreeObjects()[_facade.getCurrentTreeObjects().length - 1]; if (_advanced) { _addAspectButton.setEnabled(true); _addSimilarAspectButton.setEnabled(true); } label = NLMessages.getString("Treeview_currentlySelectedRef"); //$NON-NLS-1$ label += cr.getDisplayNameLong(); } else if (_facade.getCurrentTreeObjects()[_facade.getCurrentTreeObjects().length - 1] instanceof Aspect) { Aspect ca = (Aspect) _facade.getCurrentTreeObjects()[_facade.getCurrentTreeObjects().length - 1]; if (_advanced) { _addAspectButton.setEnabled(false); _addSimilarAspectButton.setEnabled(false); } label = NLMessages.getString("Treeview_currentlySelectedA"); //$NON-NLS-1$ label += "ID: " + _facade.getCurrentAspect().getPdrId().toString() + "\n\n"; //$NON-NLS-1$ //$NON-NLS-2$ label += ca.getNotification(); } } _currentObjectText.setText(label); } /** * Uncheck toggle commands. */ private void uncheckToggleCommands() { ICommandService cService = (ICommandService) PlatformUI.getWorkbench().getService(ICommandService.class); Command command; State tState; command = cService.getCommand("org.bbaw.pdr.ae.view.main.commands.FilterOnlyAspectsDivergentMarkup"); tState = command.getState(AEPluginIDs.TOGGLE_STATE_FILTERONLYASPECTSDIVERGENTMARKUP); if ((Boolean) tState.getValue()) { IHandlerService handlerService = (IHandlerService) PlatformUI.getWorkbench().getService( IHandlerService.class); try { handlerService.executeCommand( "org.bbaw.pdr.ae.view.main.commands.FilterOnlyAspectsDivergentMarkup", null); //$NON-NLS-1$ } catch (ExecutionException e) { e.printStackTrace(); } catch (NotDefinedException e) { e.printStackTrace(); } catch (NotEnabledException e) { e.printStackTrace(); } catch (NotHandledException e) { e.printStackTrace(); } } command = cService.getCommand("org.bbaw.pdr.ae.view.main.commands.FilterOnlyIncorrectObjects"); tState = command.getState(AEPluginIDs.TOGGLE_STATE_FILTERONLYINCORRECTOBJECTS); if ((Boolean) tState.getValue()) { IHandlerService handlerService = (IHandlerService) PlatformUI.getWorkbench().getService( IHandlerService.class); try { handlerService.executeCommand("org.bbaw.pdr.ae.view.main.commands.FilterOnlyIncorrectObjects", null); //$NON-NLS-1$ } catch (ExecutionException e) { e.printStackTrace(); } catch (NotDefinedException e) { e.printStackTrace(); } catch (NotEnabledException e) { e.printStackTrace(); } catch (NotHandledException e) { e.printStackTrace(); } } command = cService.getCommand("org.bbaw.pdr.ae.view.main.commands.FilterOnlyNewObjects"); tState = command.getState(AEPluginIDs.TOGGLE_STATE_FILTERONLYNEWOBJECTS); if ((Boolean) tState.getValue()) { IHandlerService handlerService = (IHandlerService) PlatformUI.getWorkbench().getService( IHandlerService.class); try { handlerService.executeCommand("org.bbaw.pdr.ae.view.main.commands.FilterOnlyNewObjects", null); //$NON-NLS-1$ } catch (ExecutionException e) { e.printStackTrace(); } catch (NotDefinedException e) { e.printStackTrace(); } catch (NotEnabledException e) { e.printStackTrace(); } catch (NotHandledException e) { e.printStackTrace(); } } command = cService.getCommand("org.bbaw.pdr.ae.view.main.commands.FilterOnlyPersonConcurrences"); tState = command.getState(AEPluginIDs.TOGGLE_STATE_FILTERONLYPERSONCONCURRENCES); if ((Boolean) tState.getValue()) { IHandlerService handlerService = (IHandlerService) PlatformUI.getWorkbench().getService( IHandlerService.class); try { handlerService.executeCommand("org.bbaw.pdr.ae.view.main.commands.FilterOnlyPersonConcurrences", null); //$NON-NLS-1$ } catch (ExecutionException e) { e.printStackTrace(); } catch (NotDefinedException e) { e.printStackTrace(); } catch (NotEnabledException e) { e.printStackTrace(); } catch (NotHandledException e) { e.printStackTrace(); } } command = cService.getCommand("org.bbaw.pdr.ae.view.main.commands.FilterOnlyPersonIdentifiers"); tState = command.getState(AEPluginIDs.TOGGLE_STATE_FILTERONLYPERSONIDENTIFIERS); if ((Boolean) tState.getValue()) { IHandlerService handlerService = (IHandlerService) PlatformUI.getWorkbench().getService( IHandlerService.class); try { handlerService.executeCommand("org.bbaw.pdr.ae.view.main.commands.FilterOnlyPersonIdentifiers", null); //$NON-NLS-1$ } catch (ExecutionException e) { e.printStackTrace(); } catch (NotDefinedException e) { e.printStackTrace(); } catch (NotEnabledException e) { e.printStackTrace(); } catch (NotHandledException e) { e.printStackTrace(); } } command = cService.getCommand("org.bbaw.pdr.ae.view.main.commands.FilterOnlyUpdatedObjects"); tState = command.getState(AEPluginIDs.TOGGLE_STATE_FILTERONLYUPDATEDOBJECTS); if ((Boolean) tState.getValue()) { IHandlerService handlerService = (IHandlerService) PlatformUI.getWorkbench().getService( IHandlerService.class); try { handlerService.executeCommand("org.bbaw.pdr.ae.view.main.commands.FilterOnlyUpdatedObjects", null); //$NON-NLS-1$ } catch (ExecutionException e) { e.printStackTrace(); } catch (NotDefinedException e) { e.printStackTrace(); } catch (NotEnabledException e) { e.printStackTrace(); } catch (NotHandledException e) { e.printStackTrace(); } } command = cService.getCommand("org.bbaw.pdr.ae.view.main.commands.FilterOnlyWithoutICCUPersons"); tState = command.getState(AEPluginIDs.TOGGLE_STATE_FILTERONLYWITHOUTICCUPERSONS); if ((Boolean) tState.getValue()) { IHandlerService handlerService = (IHandlerService) PlatformUI.getWorkbench().getService( IHandlerService.class); try { handlerService.executeCommand("org.bbaw.pdr.ae.view.main.commands.FilterOnlyWithoutICCUPersons", null); //$NON-NLS-1$ } catch (ExecutionException e) { e.printStackTrace(); } catch (NotDefinedException e) { e.printStackTrace(); } catch (NotEnabledException e) { e.printStackTrace(); } catch (NotHandledException e) { e.printStackTrace(); } } command = cService.getCommand("org.bbaw.pdr.ae.view.main.commands.FilterOnlyWithoutLCCNPersons"); tState = command.getState(AEPluginIDs.TOGGLE_STATE_FILTERONLYWITHOUTLCCNPERSONS); if ((Boolean) tState.getValue()) { IHandlerService handlerService = (IHandlerService) PlatformUI.getWorkbench().getService( IHandlerService.class); try { handlerService.executeCommand("org.bbaw.pdr.ae.view.main.commands.FilterOnlyWithoutLCCNPersons", null); //$NON-NLS-1$ } catch (ExecutionException e) { e.printStackTrace(); } catch (NotDefinedException e) { e.printStackTrace(); } catch (NotEnabledException e) { e.printStackTrace(); } catch (NotHandledException e) { e.printStackTrace(); } } command = cService.getCommand("org.bbaw.pdr.ae.view.main.commands.FilterOnlyWithoutPNDPersons"); tState = command.getState(AEPluginIDs.TOGGLE_STATE_FILTERONLYWITHOUTPNDPERSONS); if ((Boolean) tState.getValue()) { IHandlerService handlerService = (IHandlerService) PlatformUI.getWorkbench().getService( IHandlerService.class); try { handlerService.executeCommand("org.bbaw.pdr.ae.view.main.commands.FilterOnlyWithoutPNDPersons", null); //$NON-NLS-1$ } catch (ExecutionException e) { e.printStackTrace(); } catch (NotDefinedException e) { e.printStackTrace(); } catch (NotEnabledException e) { e.printStackTrace(); } catch (NotHandledException e) { e.printStackTrace(); } } command = cService.getCommand("org.bbaw.pdr.ae.view.main.commands.FilterOnlyWithoutVIAFPersons"); tState = command.getState(AEPluginIDs.TOGGLE_STATE_FILTERONLYWITHOUTVIAFPERSONS); if ((Boolean) tState.getValue()) { IHandlerService handlerService = (IHandlerService) PlatformUI.getWorkbench().getService( IHandlerService.class); try { handlerService.executeCommand("org.bbaw.pdr.ae.view.main.commands.FilterOnlyWithoutVIAFPersons", null); //$NON-NLS-1$ } catch (ExecutionException e) { e.printStackTrace(); } catch (NotDefinedException e) { e.printStackTrace(); } catch (NotEnabledException e) { e.printStackTrace(); } catch (NotHandledException e) { e.printStackTrace(); } } } @Override public final void update(final Observable o, final Object arg) { IStatus sAspect = new Status(IStatus.INFO, Activator.PLUGIN_ID, "TreeView update: " + arg); //$NON-NLS-1$ _iLogger.log(sAspect); // System.out.println("treeviewer notified"); //$NON-NLS-1$ if (arg.equals("newAspect")) //$NON-NLS-1$ //$NON-NLS-2$ { if (_facade.getCurrentAspect() != null) { if (_facade.getCurrentPerson() != null) { if (_advanced) { _addSimilarAspectButton.setEnabled(true); } } // _treeViewer.refresh(); } } else if (arg.equals("newTreeObjects")) //$NON-NLS-1$ { showCurrentPdrObject(); } else if (arg.equals("noSelectedPerson")) //$NON-NLS-1$ { _currentObjectText.setText(""); //$NON-NLS-1$ } else if (arg.equals("newResultingPersons")) //$NON-NLS-1$ { createTreeViewer(_tabFolderLeft, "Personen"); //$NON-NLS-1$ } else if (arg.equals("newPersonTreeRequiered")) //$NON-NLS-1$ { // createTreeViewer(_tabFolderLeft, "allPersons"); //$NON-NLS-1$ Object[] elements = _allPersonsTreeViewer.getExpandedElements(); _allPersonsTreeViewer.setInput(_facade.getAllPersons()); for (Object obj : elements) { _allPersonsTreeViewer.setExpandedState(obj, true); } showCurrentPdrObject(); } else if (arg.equals("newAdvancedQuery")) //$NON-NLS-1$ { searchAndBuildTree(_facade.getAdvancedQuery()); } else if (arg.equals("newNewPerson")) //$NON-NLS-1$ { Object[] elements = _allPersonsTreeViewer.getExpandedElements(); _allPersonsTreeViewer.refresh(); for (Object obj : elements) { _allPersonsTreeViewer.setExpandedState(obj, true); } showCurrentPdrObject(); } else if (arg.equals("newNewReference")) //$NON-NLS-1$ { Object[] elements = _allReferencesTreeViewer.getExpandedElements(); _allReferencesTreeViewer.setInput(_facade.getAllReferences()); for (Object obj : elements) { _allReferencesTreeViewer.setExpandedState(obj, true); } showCurrentPdrObject(); } else if (arg.equals("refreshAll")) //$NON-NLS-1$ { // _allReferencesTreeViewer.refresh(); _allPersonsTreeViewer.refresh(); disposeTabItems(); buildTabFolderLeft(); if (_advanced) { _addSimilarAspectButton.setEnabled(false); } showCurrentPdrObject(); } else if (arg.equals("allPersons")) //$NON-NLS-1$ { _allPersonsTreeViewer.setInput(_facade.getAllPersons()); showCurrentPdrObject(); } else if (arg.equals("allReferences")) //$NON-NLS-1$ { _allReferencesTreeViewer.setInput(_facade.getAllReferences()); showCurrentPdrObject(); } else if (arg.equals("newPersonFacetProposals")) //$NON-NLS-1$ { if (_facade.getFacetProposals() != null && !_facade.getFacetProposals().isEmpty()) { _comboSemanticViewer.setInput(_facade.getFacetProposals()); } else { _comboSemanticViewer.setInput(null); MessageDialog messageDialog = new MessageDialog(_parentShell, NLMessages.getString("View_message_person_facet_empty"), null, NLMessages.getString("View_message_person_facet_customize"), MessageDialog.INFORMATION, new String[] {NLMessages.getString("View_message_customize_person_facet_proposals"), NLMessages.getString("Handler_cancel")}, 0); int returnCode = messageDialog.open(); if (returnCode == 0) { openPreferencePage("org.bbaw.pdr.ae.view.main.preferences.pages.FacetedSearch"); if (_facade.getFacetProposals() != null && !_facade.getFacetProposals().isEmpty()) { _comboSemanticViewer.setInput(_facade.getFacetProposals()); } } } _comboSemanticViewer.refresh(); } else if (arg.equals("newAspectFacetProposals")) //$NON-NLS-1$ { if (_facade.getAspectFacetProposals() != null && !_facade.getAspectFacetProposals().isEmpty()) { _comboSemanticViewer.setInput(_facade.getAspectFacetProposals()); } else { _comboSemanticViewer.setInput(null); MessageDialog messageDialog = new MessageDialog(_parentShell, NLMessages.getString("View_message_aspect_facet_empty"), null, NLMessages.getString("View_message_aspect_facet_customize"), MessageDialog.INFORMATION, new String[] {NLMessages.getString("View_message_customize_aspect_facet_proposals"), NLMessages.getString("Handler_cancel")}, 0); int returnCode = messageDialog.open(); if (returnCode == 0) { openPreferencePage("org.bbaw.pdr.ae.view.main.preferences.pages.FacetedAspectSearch"); if (_facade.getAspectFacetProposals() != null && !_facade.getAspectFacetProposals().isEmpty()) { _comboSemanticViewer.setInput(_facade.getAspectFacetProposals()); } } } _comboSemanticViewer.refresh(); } } /* Multiple filters can be enabled at a time. */ /** * Update filter. * @param action the action */ protected final void updateFilter(final Action action) { TreeViewer treeViewer = _treeViewerMap.get(_tabFolderLeft.getSelection().getData("key")); //$NON-NLS-1$ if (action == _onlyUpdatedObjects) { if (action.isChecked()) { treeViewer.addFilter(_treenodeUpdatedFilter); } else { treeViewer.removeFilter(_treenodeUpdatedFilter); } } else if (action == _onlyNewObjects) { if (action.isChecked()) { treeViewer.addFilter(_treenodeNewFilter); } else { treeViewer.removeFilter(_treenodeNewFilter); } } else if (action == _onlyIncorrectObjects) { if (action.isChecked()) { treeViewer.addFilter(_onlyIncorrectPDRObjects); } else { treeViewer.removeFilter(_onlyIncorrectPDRObjects); } } else if (action == _onlyAspectsWithDivergentMarkup) { if (action.isChecked()) { treeViewer.addFilter(_onlyIAspectsDivergentMarkup); } else { treeViewer.removeFilter(_onlyIAspectsDivergentMarkup); } } else if (action == _onlyPersonConcurrences) { if (action.isChecked()) { treeViewer.addFilter(_personConcurrenceFilter); } else { treeViewer.removeFilter(_personConcurrenceFilter); } } else if (action == _onlyPersonIdentifiers) { if (action.isChecked()) { treeViewer.addFilter(_personIdentifierFilter); } else { treeViewer.removeFilter(_personIdentifierFilter); } } else if (action == _onlyWithoutPNDPersons) { if (action.isChecked()) { treeViewer.addFilter(_personWithoutPNDFilter); } else { treeViewer.removeFilter(_personWithoutPNDFilter); } } else if (action == _onlyWithoutLCCNPersons) { if (action.isChecked()) { treeViewer.addFilter(_personWithoutLCCNFilter); } else { treeViewer.removeFilter(_personWithoutLCCNFilter); } } else if (action == _onlyWithoutVIAFPersons) { if (action.isChecked()) { treeViewer.addFilter(_personWithoutVIAFFilter); } else { treeViewer.removeFilter(_personWithoutVIAFFilter); } } else if (action == _onlyWithoutICCUPersons) { if (action.isChecked()) { treeViewer.addFilter(_personWithoutICCUFilter); } else { treeViewer.removeFilter(_personWithoutICCUFilter); } } } public PdrObject[] getInputOfTree(String treeName, boolean filtered) { if (_treeViewerMap.containsKey(treeName)) { TreeViewer treeViewer; treeViewer = _treeViewerMap.get(treeName); Object obj = treeViewer.getInput(); ArrayList<PdrObject> inputObjects = new ArrayList<PdrObject>(); if (obj instanceof HashMap<?, ?>) { @SuppressWarnings("unchecked") HashMap<PdrId, PdrObject> inputs = (HashMap<PdrId, PdrObject>) obj; ViewerFilter[] filters = treeViewer.getFilters(); for (PdrId id : inputs.keySet()) { PdrObject po = inputs.get(id); if (filtered && filters != null && filters.length > 0) { for (ViewerFilter filter : filters) { if (filter.select(treeViewer, null, po)) { inputObjects.add(po); } } } else { inputObjects.add(po); } } return inputObjects.toArray(new PdrObject[inputObjects.size()]); } else if (obj instanceof Vector<?>) { @SuppressWarnings("unchecked") Vector<PdrObject> inputs = (Vector<PdrObject>) obj; ViewerFilter[] filters = treeViewer.getFilters(); for (PdrObject po : inputs) { if (filtered && filters != null && filters.length > 0) { for (ViewerFilter filter : filters) { if (filter.select(treeViewer, null, po)) { inputObjects.add(po); } } } else { inputObjects.add(po); } } return inputObjects.toArray(new PdrObject[inputObjects.size()]); } } return null; } }