/** * 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.CommonActivator; import org.bbaw.pdr.ae.common.NLMessages; import org.bbaw.pdr.ae.common.icons.IconsInternal; import org.bbaw.pdr.ae.common.interfaces.AEFilter; import org.bbaw.pdr.ae.control.comparator.AspectsByCreatorComparator; import org.bbaw.pdr.ae.control.comparator.AspectsByCronComparator; import org.bbaw.pdr.ae.control.comparator.AspectsByRecentChangesComparator; import org.bbaw.pdr.ae.control.comparator.AspectsByReferenceComparator; import org.bbaw.pdr.ae.control.comparator.AspectsBySemanticComparator; import org.bbaw.pdr.ae.control.core.PDRConfigProvider; import org.bbaw.pdr.ae.control.facade.Facade; import org.bbaw.pdr.ae.control.facade.RightsChecker; import org.bbaw.pdr.ae.metamodel.PdrId; import org.bbaw.pdr.ae.model.Aspect; 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.RelationStm; import org.bbaw.pdr.ae.model.SemanticStm; import org.bbaw.pdr.ae.model.TaggingRange; import org.bbaw.pdr.ae.model.view.OrderingHead; import org.bbaw.pdr.ae.view.control.ControlExtensions; import org.bbaw.pdr.ae.view.control.PDRObjectsProvider; import org.bbaw.pdr.ae.view.control.PDROrdererFactory; import org.bbaw.pdr.ae.view.control.ViewHelper; import org.bbaw.pdr.ae.view.control.customSWTWidges.MarkupTooltip; import org.bbaw.pdr.ae.view.control.filters.AspectExcludeObjectRelationsFilter; import org.bbaw.pdr.ae.view.control.filters.AspectSearchTextFilter; import org.bbaw.pdr.ae.view.control.filters.OnlyAspectDivergentMarkup; import org.bbaw.pdr.ae.view.control.filters.OnlyAspectsAboutReferenceFilter; import org.bbaw.pdr.ae.view.control.filters.OnlyAspectsBasedOnReferenceFilter; import org.bbaw.pdr.ae.view.control.filters.OnlyNewPDRObjectsFilter; import org.bbaw.pdr.ae.view.control.filters.OnlyUpdatedPDRObjectsFilter; import org.bbaw.pdr.ae.view.control.interfaces.IMarkupPresentation; import org.bbaw.pdr.ae.view.main.dialogs.FilterSelectionDialog; import org.bbaw.pdr.ae.view.main.internal.Activator; import org.eclipse.core.commands.ExecutionException; import org.eclipse.core.commands.NotEnabledException; import org.eclipse.core.commands.NotHandledException; import org.eclipse.core.commands.common.NotDefinedException; import org.eclipse.core.runtime.ILog; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Platform; import org.eclipse.core.runtime.Status; import org.eclipse.jface.action.Action; 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.resource.ImageRegistry; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.ISelectionChangedListener; import org.eclipse.jface.viewers.ISelectionProvider; import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.swt.SWT; import org.eclipse.swt.custom.CTabFolder; import org.eclipse.swt.custom.CTabItem; import org.eclipse.swt.custom.ScrolledComposite; 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.graphics.Color; import org.eclipse.swt.graphics.Point; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.layout.RowLayout; 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.Link; import org.eclipse.swt.widgets.Listener; import org.eclipse.swt.widgets.Menu; import org.eclipse.swt.widgets.MenuItem; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Text; import org.eclipse.ui.IWorkbench; import org.eclipse.ui.IWorkbenchPart; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.handlers.IHandlerService; import org.eclipse.ui.part.ViewPart; /** * This ViewClass creates the CategoryView of the Aspects of the current Person. * it extends AbstractCatView. The List of Categories is still static and based * upon the List given in the properties file. CategoryView . * @author Christoph Plutte */ public class AspectsView extends ViewPart implements Observer, ISelectionProvider { /** The concurring. */ private boolean _concurring = false; /** The additional. */ private boolean _additional = false; /** The _provider. */ private String _provider; /** The current category id. */ private int _currentCategoryID; /** The all aspects. */ private Text _allAspects; /** The search text. */ private Text _searchText; /** The order combo. */ private Combo _orderCombo; /** The order button. */ private Button _orderButton; /** The sorted combo. */ private Combo _sortedCombo; /** The sort button desc. */ private Button _sortButtonDesc; /** The sort button asc. */ private Button _sortButtonAsc; /** The search button. */ private Button _searchButton; /** The year filter action. */ private Action _onlyAspectsWithDivergentMarkup, _openAspectsInNewTap, _openReferencesInNewTap, _onlyNewAspectsAction, _onlyUpdatedAspectsAction, _excludeObjectRelationsAction, _referenceFilterAction, _userFilterAction, _semanticFilterAction, _personFilterAction, _yearFilterAction; /** The aspect exlude object relations filter. */ private AEFilter _onlyAspectsDivergentMarkupFilter, _onlyNewAspectsFilter, _onlyUpdatedAspectsFilter, _aspectExludeObjectRelationsFilter; /** The root menu manager. */ private IMenuManager _rootMenuManager; /** The aspects selection adapter. */ private SelectionAdapter _aspectsSelectionAdapter; /** The aspects. */ private Vector<Aspect> _aspects; /** The parent shell. */ private Shell _parentShell; /** The _main composite. */ private Composite _mainComposite; /** The tab folder right. */ private CTabFolder _tabFolderRight; /** hashmap for tabitems and semantic categories in category view. */ private HashMap<Integer, CTabItem> _tabMap = new HashMap<Integer, CTabItem>(AEConstants.MAX_NUMBER_CATEGORIES); /** * id of category view. */ public static final String ID = "org.bbaw.pdr.ae.view.main.views.AspectsView"; //$NON-NLS-1$ /** __facade singleton instance. */ private Facade _facade = Facade.getInstanz(); /** The _current objects. */ private PdrObject[] _currentObjects; /** The WHIT e_ color. */ private static final Color WHITE_COLOR = Display.getDefault().getSystemColor(SWT.COLOR_WHITE); /** Logger. */ private static ILog iLogger = AEConstants.ILOGGER; /** Instance of shared image registry. */ private ImageRegistry _imageReg = CommonActivator.getDefault().getImageRegistry(); /** The pdr objects _provider. */ private PDRObjectsProvider _pdrObjectsProvider = new PDRObjectsProvider(); /** The _orderer factory. */ private PDROrdererFactory _ordererFactory = new PDROrdererFactory(); /** The selection changed listeners. */ private ArrayList<ISelectionChangedListener> _selectionChangedListeners = new ArrayList<ISelectionChangedListener>(); /** The _current aspect. */ private Aspect _currentAspect; private boolean _advanced = Platform.getPreferencesService().getBoolean(CommonActivator.PLUGIN_ID, "AE_ADVANCED_VERSION", AEConstants.AE_ADVANCED_VERSION, null); private Action _onlyAspectsBasedOnReference; private Action _onlyAspectsAboutReference; private OnlyAspectsBasedOnReferenceFilter _onlyAspectsBasedOnReferenceFilter; private OnlyAspectsAboutReferenceFilter _onlyAspectsAboutReferenceFilter;; /** * constructor. */ public static AspectsView instance; public AspectsView() { instance=this; } @Override public final void addSelectionChangedListener(final ISelectionChangedListener listener) { _selectionChangedListeners.add(listener); } /** * method to build Categories. * @param currentObjects the currently selected objects of whom the related * aspects are to be shown * @param savedAspect the aspect just saved or null */ public final void buildCategories(final PdrObject[] currentObjects, final Aspect savedAspect) { _currentObjects = currentObjects; if (_tabMap != null) { _tabMap.clear(); _tabMap = null; } _tabFolderRight = new CTabFolder(_mainComposite, SWT.NONE); _tabFolderRight.setLayoutData(new GridData()); ((GridData) _tabFolderRight.getLayoutData()).horizontalAlignment = SWT.FILL; ((GridData) _tabFolderRight.getLayoutData()).verticalAlignment = SWT.FILL; ((GridData) _tabFolderRight.getLayoutData()).grabExcessHorizontalSpace = true; ((GridData) _tabFolderRight.getLayoutData()).grabExcessVerticalSpace = true; _tabMap = new HashMap<Integer, CTabItem>(AEConstants.MAX_NUMBER_CATEGORIES); ScrolledComposite scrollComp; Composite contentComp; GridLayout layout; CTabItem tabItem; final Vector<OrderingHead> orderedAspects = _pdrObjectsProvider.getArrangedAspects(); // System.out.println("orderer " + pdrObjectsProvider.getOrderer()); if (_currentObjects != null && _advanced) { _allAspects.setText("" + _pdrObjectsProvider.getNumberOfAspects()); //$NON-NLS-1$ _sortedCombo.setEnabled(true); _orderButton.setEnabled(true); _orderCombo.setEnabled(true); } int start = 0; if (orderedAspects != null && !orderedAspects.isEmpty()) { for (int i = 0; i < orderedAspects.size(); i++) { tabItem = new CTabItem(_tabFolderRight, SWT.NONE); tabItem.setText(orderedAspects.get(i).getLabel()); tabItem.setData("id", orderedAspects.get(i).getValue()); //$NON-NLS-1$ tabItem.setData("nr", i); //$NON-NLS-1$ tabItem.setData("loaded", "false"); //$NON-NLS-1$ //$NON-NLS-2$ tabItem.setImage(_imageReg.get(orderedAspects.get(i).getImageString())); _tabMap.put(i, tabItem); scrollComp = new ScrolledComposite(_tabFolderRight, SWT.V_SCROLL | SWT.H_SCROLL); scrollComp.setExpandHorizontal(true); scrollComp.setExpandVertical(true); scrollComp.setMinSize(SWT.DEFAULT, SWT.DEFAULT); ViewHelper.accelerateScrollbar(scrollComp, 20); layout = new GridLayout(); layout.numColumns = 1; layout.verticalSpacing = 2; scrollComp.setLayout(layout); contentComp = new Composite(scrollComp, SWT.NONE); contentComp.setLayout(layout); scrollComp.setContent(contentComp); tabItem.setControl(scrollComp); } // for-loop if (savedAspect != null) { String cat = null; if (savedAspect.getSemanticDim().getSemanticLabelByProvider(_provider) != null && !savedAspect.getSemanticDim().getSemanticLabelByProvider(_provider).isEmpty()) { cat = savedAspect.getSemanticDim().getSemanticLabelByProvider(_provider).firstElement(); } else if (!savedAspect.getSemanticDim().getSemanticLabelByProvider(null).isEmpty()) { cat = savedAspect.getSemanticDim().getSemanticLabelByProvider(null).firstElement(); } if (cat != null) { Integer catID = 0; for (int j = 0; j < orderedAspects.size(); j++) { OrderingHead oh = orderedAspects.get(j); if (cat.equals(oh.getValue())) { catID = j; break; } } _currentCategoryID = catID; _tabFolderRight.setSelection(catID); Vector<Aspect> as = orderedAspects.get(catID).getAspects(); for (int k = 0; k < as.size(); k++) { if (as.get(k).getPdrId().equals(savedAspect.getPdrId())) { start = k; break; } } } else { _currentCategoryID = 0; } } _tabFolderRight.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(final SelectionEvent se) { int selected = _tabFolderRight.getSelectionIndex(); IStatus stabfolder = new Status(IStatus.INFO, Activator.PLUGIN_ID, "AspectsView tab item selected: " //$NON-NLS-1$ + _tabFolderRight.getSelection().getText()); iLogger.log(stabfolder); _currentCategoryID = selected; IStatus sCat = new Status(IStatus.INFO, Activator.PLUGIN_ID, "AspectsView current CategoryID: " //$NON-NLS-1$ + _currentCategoryID); iLogger.log(sCat); if (!_tabMap.get(_currentCategoryID).getData("loaded").equals("true")) //$NON-NLS-1$ //$NON-NLS-2$ { loadAspects(orderedAspects, _currentCategoryID, 0, 10, null); } } }); // SelectionListener if (_tabMap.containsKey(_currentCategoryID)) { loadAspects(orderedAspects, _currentCategoryID, start, 10, savedAspect); _tabFolderRight.setSelection(_currentCategoryID); } else { loadAspects(orderedAspects, 0, start, 10, savedAspect); _tabFolderRight.setSelection(0); } } else { // System.out.println("no categories"); //$NON-NLS-1$ Label noCatLabel = new Label(_tabFolderRight, SWT.None); noCatLabel.setText(NLMessages.getString("View_message_no_aspects_found")); noCatLabel.pack(); } // _tabFolderRight.layout(); _tabFolderRight.pack(); _mainComposite.layout(); // _mainComposite.pack(); } // buildCategories /** * Creates the actions. */ private void createActions() { _onlyNewAspectsAction = new Action(NLMessages.getString("View_action_only_newAspects")) { @Override public void run() { updateFilter(_onlyNewAspectsAction); } }; _onlyNewAspectsAction.setChecked(false); _onlyNewAspectsAction.setEnabled(false); _onlyNewAspectsAction.setImageDescriptor(_imageReg.getDescriptor(IconsInternal.DECORATION_NEW)); _onlyUpdatedAspectsAction = new Action(NLMessages.getString("View_action_only_updated_aspects")) { @Override public void run() { updateFilter(_onlyUpdatedAspectsAction); } }; _onlyUpdatedAspectsAction.setChecked(false); _onlyUpdatedAspectsAction.setEnabled(false); _onlyUpdatedAspectsAction.setImageDescriptor(_imageReg.getDescriptor(IconsInternal.DECORATION_UPDATED)); _excludeObjectRelationsAction = new Action(NLMessages.getString("View_action_exclude_other_relations")) { @Override public void run() { updateFilter(_excludeObjectRelationsAction); } }; _excludeObjectRelationsAction.setChecked(false); _excludeObjectRelationsAction.setEnabled(false); _excludeObjectRelationsAction.setImageDescriptor(_imageReg.getDescriptor(IconsInternal.RELATION)); _onlyAspectsWithDivergentMarkup = new Action(NLMessages.getString("View_action_only_divergent_markup")) { @Override public void run() { updateFilter(_onlyAspectsWithDivergentMarkup); } }; _onlyAspectsWithDivergentMarkup.setChecked(false); _onlyAspectsWithDivergentMarkup.setEnabled(false); _onlyAspectsWithDivergentMarkup.setImageDescriptor(_imageReg.getDescriptor(IconsInternal.MARKUP_QUESTION)); _onlyAspectsBasedOnReference = new Action(NLMessages.getString("View_action_only_based_on_reference")) { @Override public void run() { updateFilter(_onlyAspectsBasedOnReference); } }; _onlyAspectsBasedOnReference.setChecked(false); _onlyAspectsBasedOnReference.setEnabled(false); _onlyAspectsBasedOnReference.setImageDescriptor(_imageReg.getDescriptor(IconsInternal.REFERENCE)); _onlyAspectsAboutReference = new Action(NLMessages.getString("View_action_only_mentioning_reference")) { @Override public void run() { updateFilter(_onlyAspectsAboutReference); } }; _onlyAspectsAboutReference.setChecked(false); _onlyAspectsAboutReference.setEnabled(false); _onlyAspectsAboutReference.setImageDescriptor(_imageReg.getDescriptor(IconsInternal.REFERENCE_ASPECTS)); _referenceFilterAction = new Action(NLMessages.getString("View_action_reference_filter")) { @Override public void run() { IWorkbench workbench = PlatformUI.getWorkbench(); Display display = workbench.getDisplay(); Shell shell = new Shell(display); FilterSelectionDialog dialog = new FilterSelectionDialog(shell, _pdrObjectsProvider, "reference"); //$NON-NLS-1$ dialog.open(); if (dialog.getReturnCode() == 0) { disposeTabItems(); buildCategories(_currentObjects, null); } _referenceFilterAction.setChecked(_pdrObjectsProvider.hasReferenceFilter()); } }; _referenceFilterAction.setChecked(false); _referenceFilterAction.setEnabled(false); _referenceFilterAction.setImageDescriptor(_imageReg.getDescriptor(IconsInternal.REFERENCES)); _personFilterAction = new Action(NLMessages.getString("View_action_person_filter")) { @Override public void run() { IWorkbench workbench = PlatformUI.getWorkbench(); Display display = workbench.getDisplay(); Shell shell = new Shell(display); FilterSelectionDialog dialog = new FilterSelectionDialog(shell, _pdrObjectsProvider, "person"); //$NON-NLS-1$ dialog.open(); if (dialog.getReturnCode() == 0) { disposeTabItems(); buildCategories(_currentObjects, null); } _personFilterAction.setChecked(_pdrObjectsProvider.hasPersonFilter()); } }; _personFilterAction.setChecked(false); _personFilterAction.setEnabled(false); _personFilterAction.setImageDescriptor(_imageReg.getDescriptor(IconsInternal.PERSONS)); _semanticFilterAction = new Action(NLMessages.getString("View_action_semantic_filter")) { @Override public void run() { IWorkbench workbench = PlatformUI.getWorkbench(); Display display = workbench.getDisplay(); Shell shell = new Shell(display); FilterSelectionDialog dialog = new FilterSelectionDialog(shell, _pdrObjectsProvider, "semantic"); //$NON-NLS-1$ dialog.open(); if (dialog.getReturnCode() == 0) { disposeTabItems(); buildCategories(_currentObjects, null); } _semanticFilterAction.setChecked(_pdrObjectsProvider.hasSemanticFilter()); } }; _semanticFilterAction.setChecked(false); _semanticFilterAction.setEnabled(false); _semanticFilterAction.setImageDescriptor(_imageReg.getDescriptor(IconsInternal.CLASSIFICATIONS)); _yearFilterAction = new Action(NLMessages.getString("View_action_time_filter")) { @Override public void run() { IWorkbench workbench = PlatformUI.getWorkbench(); Display display = workbench.getDisplay(); Shell shell = new Shell(display); FilterSelectionDialog dialog = new FilterSelectionDialog(shell, _pdrObjectsProvider, "year"); //$NON-NLS-1$ dialog.open(); if (dialog.getReturnCode() == 0) { disposeTabItems(); buildCategories(_currentObjects, null); } _yearFilterAction.setChecked(_pdrObjectsProvider.hasYearFilter()); } }; _yearFilterAction.setChecked(false); _yearFilterAction.setEnabled(false); _yearFilterAction.setImageDescriptor(_imageReg.getDescriptor(IconsInternal.TIME)); _userFilterAction = new Action(NLMessages.getString("View_action_user_filter")) { @Override public void run() { IWorkbench workbench = PlatformUI.getWorkbench(); Display display = workbench.getDisplay(); Shell shell = new Shell(display); FilterSelectionDialog dialog = new FilterSelectionDialog(shell, _pdrObjectsProvider, "user"); //$NON-NLS-1$ dialog.open(); if (dialog.getReturnCode() == 0) { disposeTabItems(); buildCategories(_currentObjects, null); } _userFilterAction.setChecked(_pdrObjectsProvider.hasUserFilter()); } }; _userFilterAction.setChecked(false); _userFilterAction.setEnabled(false); _userFilterAction.setImageDescriptor(_imageReg.getDescriptor(IconsInternal.USER)); } /** * Creates the additional aspects selection adapter. */ private void createAdditionalAspectsSelectionAdapter() { _aspectsSelectionAdapter = new SelectionAdapter() { @Override public void widgetSelected(final SelectionEvent ev) { // System.out.println("Selection: " + ev.text); //$NON-NLS-1$ Link button = (Link) ev.getSource(); Event event = new Event(); event.data = button.getData(); 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(); } } }; } /** * Creates the context menu. * @param control the control */ protected final void createContextMenu(final Control control) { /* Context Menu */ // Menu contextMenu = new Menu(stext); MenuManager menuMgr = new MenuManager(); Menu contextMenu = menuMgr.createContextMenu(control); SelectionAdapter contextMenuSelectionListener = new SelectionAdapter() { @Override public void widgetSelected(final SelectionEvent event) { MenuItem source = (MenuItem) event.getSource(); if ("".equals(source.getText())) //$NON-NLS-1$ { _facade.setCurrentCopiedAspect(); } } }; menuMgr.add(_openAspectsInNewTap); menuMgr.add(_openReferencesInNewTap); menuMgr.add(new Separator()); MenuItem menuOpenAspects = new MenuItem(contextMenu, SWT.PUSH); menuOpenAspects.setText(""); //$NON-NLS-1$ menuOpenAspects.addSelectionListener(contextMenuSelectionListener); MenuItem menuItemCopyAspect = new MenuItem(contextMenu, SWT.PUSH); menuItemCopyAspect.setText(""); //$NON-NLS-1$ menuItemCopyAspect.addSelectionListener(contextMenuSelectionListener); MenuItem menuItemCopyText = new MenuItem(contextMenu, SWT.PUSH); menuItemCopyText.setText(NLMessages.getString("View_copyText")); //$NON-NLS-1$ menuItemCopyText.addSelectionListener(contextMenuSelectionListener); control.setMenu(contextMenu); getSite().registerContextMenu(menuMgr, AspectsView.this); } /** * Creates the context menu action. */ private void createContextMenuAction() { _openAspectsInNewTap = new Action(NLMessages.getString("View_action_open_aspects_new_tab")) { @Override public void run() { Aspect a = _facade.getCurrentAspect(); if (a != null && a.getPdrId() != null) { Event event = new Event(); event.data = a.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() { Aspect a = _facade.getCurrentAspect(); if (a != null && a.getPdrId() != null) { Event event = new Event(); event.data = a.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)); } /** * Creates the filters. */ private void createFilters() { // COMEBACK createFiltersAndSorters _onlyNewAspectsFilter = new OnlyNewPDRObjectsFilter(); _onlyUpdatedAspectsFilter = new OnlyUpdatedPDRObjectsFilter(); _onlyAspectsDivergentMarkupFilter = new OnlyAspectDivergentMarkup(); _aspectExludeObjectRelationsFilter = new AspectExcludeObjectRelationsFilter(null); _onlyAspectsBasedOnReferenceFilter = new OnlyAspectsBasedOnReferenceFilter(null); _onlyAspectsAboutReferenceFilter = new OnlyAspectsAboutReferenceFilter(null); } /** * Creates the menus. */ private void createMenus() { _rootMenuManager = getViewSite().getActionBars().getMenuManager(); _rootMenuManager.setRemoveAllWhenShown(true); _rootMenuManager.addMenuListener(new IMenuListener() { @Override public void menuAboutToShow(final IMenuManager mgr) { fillMenu(mgr); } }); fillMenu(_rootMenuManager); getViewSite().getActionBars().getToolBarManager().removeAll(); getViewSite().getActionBars().getToolBarManager().add(_onlyNewAspectsAction); getViewSite().getActionBars().getToolBarManager().add(_personFilterAction); getViewSite().getActionBars().getToolBarManager().add(_referenceFilterAction); getViewSite().getActionBars().getToolBarManager().add(_semanticFilterAction); getViewSite().getActionBars().getToolBarManager().add(_yearFilterAction); if (_currentObjects != null && _currentObjects.length > 0 && _currentObjects[0] instanceof ReferenceMods) { getViewSite().getActionBars().getToolBarManager().add(_onlyAspectsBasedOnReference); getViewSite().getActionBars().getToolBarManager().add(_onlyAspectsAboutReference); } getViewSite().getActionBars().updateActionBars(); } @Override public final void createPartControl(final Composite parent) { parent.setLayout(new GridLayout()); String secId = this.getViewSite().getSecondaryId(); if (secId != null) { _concurring = (secId.equals("b")); //$NON-NLS-1$ } _provider = Platform .getPreferencesService() .getString(CommonActivator.PLUGIN_ID, "PRIMARY_SEMANTIC_PROVIDER", AEConstants.CLASSIFICATION_AUTHORITY, null).toUpperCase(); //$NON-NLS-1$ _mainComposite = new Composite(parent, SWT.NULL); _mainComposite.setLayoutData(new GridData()); ((GridData) _mainComposite.getLayoutData()).horizontalAlignment = SWT.FILL; ((GridData) _mainComposite.getLayoutData()).verticalAlignment = SWT.FILL; ((GridData) _mainComposite.getLayoutData()).grabExcessHorizontalSpace = true; ((GridData) _mainComposite.getLayoutData()).grabExcessVerticalSpace = true; _mainComposite.setLayout(new GridLayout()); _pdrObjectsProvider.setOrderer(_ordererFactory.createAspectOrderer("aspect.semantic")); if (_advanced) { Composite topComposite = new Composite(_mainComposite, SWT.NONE); topComposite.setLayoutData(new GridData()); ((GridData) topComposite.getLayoutData()).horizontalAlignment = SWT.FILL; ((GridData) topComposite.getLayoutData()).grabExcessHorizontalSpace = true; ((GridData) topComposite.getLayoutData()).widthHint = 20; topComposite.setLayout(new RowLayout()); Composite alltitleComp = new Composite(topComposite, SWT.NONE); alltitleComp.setLayout(new GridLayout()); ((GridLayout) alltitleComp.getLayout()).numColumns = 2; ((GridLayout) alltitleComp.getLayout()).marginHeight = 6; ((GridLayout) alltitleComp.getLayout()).marginWidth = 0; Label all = new Label(alltitleComp, SWT.NONE); all.setText(NLMessages.getString("View_number_of_allAspects")); _allAspects = new Text(alltitleComp, SWT.NONE | SWT.READ_ONLY); _allAspects.setLayoutData(new GridData()); ((GridData) _allAspects.getLayoutData()).widthHint = 40; Composite ordertitleComp = new Composite(topComposite, SWT.NONE); ordertitleComp.setLayout(new GridLayout()); ((GridLayout) ordertitleComp.getLayout()).numColumns = 3; ((GridLayout) ordertitleComp.getLayout()).marginHeight = 0; ((GridLayout) ordertitleComp.getLayout()).marginWidth = 0; Label order = new Label(ordertitleComp, SWT.NONE); order.setText(NLMessages.getString("View_group_by")); _orderCombo = new Combo(ordertitleComp, SWT.NONE | SWT.READ_ONLY); String[] oderers = new String[] {NLMessages.getString("View_group_all"), NLMessages.getString("View_group_semantic"), NLMessages.getString("View_group_year"), NLMessages.getString("View_group_place"), NLMessages.getString("View_group_reference"), NLMessages.getString("View_group_relation"), NLMessages.getString("View_group_markup"), NLMessages.getString("View_group_person"), NLMessages.getString("View_group_user")}; _orderCombo.setItems(oderers); _orderCombo.select(1); _orderCombo.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(final SelectionEvent event) { } }); // SelectionListener _orderButton = new Button(ordertitleComp, SWT.NONE | SWT.READ_ONLY); _orderButton.setText(NLMessages.getString("View_group")); _orderButton.setToolTipText(NLMessages.getString("View_group_tooltip")); _orderButton.setImage(_imageReg.get(IconsInternal.GROUP)); _orderButton.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(final SelectionEvent event) { int selection = _orderCombo.getSelectionIndex(); switch (selection) { case 0: _pdrObjectsProvider.setOrderer(null); break; case 1: _pdrObjectsProvider.setOrderer(_ordererFactory.createAspectOrderer("aspect.semantic")); break; case 2: _pdrObjectsProvider.setOrderer(_ordererFactory.createAspectOrderer("aspect.year")); break; case 3: _pdrObjectsProvider.setOrderer(_ordererFactory.createAspectOrderer("aspect.place")); break; case 4: _pdrObjectsProvider.setOrderer(_ordererFactory.createAspectOrderer("aspect.reference")); break; case 5: _pdrObjectsProvider.setOrderer(_ordererFactory.createAspectOrderer("aspect.relation")); break; case 6: _pdrObjectsProvider.setOrderer(_ordererFactory.createAspectOrderer("aspect.markup")); break; case 7: _pdrObjectsProvider.setOrderer(_ordererFactory.createAspectOrderer("aspect.person")); break; case 8: _pdrObjectsProvider.setOrderer(_ordererFactory.createAspectOrderer("aspect.user")); break; default: break; } disposeTabItems(); _currentCategoryID = 0; if (_concurring) { buildCategories(new Person[] {_facade.getConcurringPerson()}, _facade.getCurrentAspect()); } else { buildCategories(_facade.getCurrentTreeObjects(), _facade.getCurrentAspect()); } _tabFolderRight.setSelection(0); } }); // SelectionListener _orderButton.setEnabled(false); Composite sorttitleComp = new Composite(topComposite, SWT.NONE); sorttitleComp.setLayout(new GridLayout()); ((GridLayout) sorttitleComp.getLayout()).numColumns = 4; ((GridLayout) sorttitleComp.getLayout()).marginHeight = 0; ((GridLayout) sorttitleComp.getLayout()).marginWidth = 0; Label sort = new Label(sorttitleComp, SWT.NONE); sort.setText(NLMessages.getString("View_sort_by")); sort.setLayoutData(new GridData()); ((GridData) sort.getLayoutData()).horizontalIndent = 8; _sortedCombo = new Combo(sorttitleComp, SWT.NONE | SWT.READ_ONLY); String[] sorters = new String[] {NLMessages.getString("View_sort_cronologically"), NLMessages.getString("View_sort_semantic"), NLMessages.getString("View_sort_revision"), NLMessages.getString("View_sort_reference"), NLMessages.getString("View_sort_creator")}; _sortedCombo.setItems(sorters); _sortedCombo.select(0); _sortedCombo.addSelectionListener(new SelectionAdapter() { private int current_selection = _sortedCombo.getSelectionIndex(); @Override public void widgetSelected(final SelectionEvent event) { // activate sorting order buttons in case sorting criterion has been changed. if (_sortedCombo.getSelectionIndex() != current_selection) { _sortButtonDesc.setEnabled(true); _sortButtonAsc.setEnabled(true); current_selection = _sortedCombo.getSelectionIndex(); } } }); // SelectionListener // Button for sorting in ascending order _sortButtonAsc = new Button(sorttitleComp, SWT.NONE | SWT.READ_ONLY); _sortButtonAsc.setToolTipText(NLMessages.getString("View_sort_asc_tooltip")); _sortButtonAsc.setImage(_imageReg.get(IconsInternal.SORT_ALPHABETIC_ASC)); _sortButtonAsc.setEnabled(false); _sortButtonAsc.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(final SelectionEvent event) { _sortButtonDesc.setEnabled(true); _sortButtonAsc.setEnabled(false); int selection = _sortedCombo.getSelectionIndex(); // System.out.println("ordering selection " + selection); //$NON-NLS-1$ switch (selection) { case 0: _pdrObjectsProvider.setComparator(new AspectsByCronComparator(true)); break; case 1: _pdrObjectsProvider.setComparator(new AspectsBySemanticComparator(_provider, true)); break; case 2: _pdrObjectsProvider.setComparator(new AspectsByRecentChangesComparator(true)); break; case 3: _pdrObjectsProvider.setComparator(new AspectsByReferenceComparator(true)); break; case 4: _pdrObjectsProvider.setComparator(new AspectsByCreatorComparator(true)); break; default: break; } disposeTabItems(); if (_concurring) { // loadPdrObject(_facade.getConcurringPerson()); buildCategories(new Person[] {_facade.getConcurringPerson()}, _facade.getCurrentAspect()); } else { buildCategories(_facade.getCurrentTreeObjects(), _facade.getCurrentAspect()); } _tabFolderRight.setSelection(_currentCategoryID); } }); // SelectionListener // button for sorting in descending order _sortButtonDesc = new Button(sorttitleComp, SWT.NONE | SWT.READ_ONLY); _sortButtonDesc.setToolTipText(NLMessages.getString("View_sort_tooltip")); _sortButtonDesc.setImage(_imageReg.get(IconsInternal.SORT_ALPHABETIC_DESC)); _sortButtonDesc.setEnabled(true); _sortButtonDesc.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(final SelectionEvent event) { _sortButtonDesc.setEnabled(false); _sortButtonAsc.setEnabled(true); int selection = _sortedCombo.getSelectionIndex(); switch (selection) { case 0: _pdrObjectsProvider.setComparator(new AspectsByCronComparator(false)); break; case 1: _pdrObjectsProvider.setComparator(new AspectsBySemanticComparator(_provider, false)); break; case 2: _pdrObjectsProvider.setComparator(new AspectsByRecentChangesComparator(false)); break; case 3: _pdrObjectsProvider.setComparator(new AspectsByReferenceComparator(false)); break; case 4: _pdrObjectsProvider.setComparator(new AspectsByCreatorComparator(false)); break; default: break; } disposeTabItems(); if (_concurring) { buildCategories(new Person[] {_facade.getConcurringPerson()}, _facade.getCurrentAspect()); } else { buildCategories(_facade.getCurrentTreeObjects(), _facade.getCurrentAspect()); } _tabFolderRight.setSelection(_currentCategoryID); } }); // SelectionListener Composite searchComp = new Composite(topComposite, SWT.NONE); searchComp.setLayout(new GridLayout()); ((GridLayout) searchComp.getLayout()).numColumns = 3; ((GridLayout) searchComp.getLayout()).marginHeight = 0; ((GridLayout) searchComp.getLayout()).marginWidth = 0; Label iconLable = new Label(searchComp, SWT.NONE); iconLable.setImage(_imageReg.get(IconsInternal.FILTER)); iconLable.setLayoutData(new GridData()); ((GridData) iconLable.getLayoutData()).horizontalIndent = 8; _searchText = new Text(searchComp, SWT.BORDER); _searchText.setLayoutData(new GridData()); ((GridData) _searchText.getLayoutData()).horizontalAlignment = SWT.FILL; ((GridData) _searchText.getLayoutData()).grabExcessHorizontalSpace = true; ((GridData) _searchText.getLayoutData()).minimumWidth = 80; _searchButton = new Button(searchComp, SWT.PUSH); _searchText.addKeyListener(new KeyListener() { @Override public void keyPressed(final KeyEvent e) { if (e.keyCode == SWT.CR) { String search = _searchText.getText(); AspectSearchTextFilter filter = _pdrObjectsProvider.getSearchFilter(); if (search.trim().length() > 0) { if (filter != null) { filter.setSearchText(search); } else { filter = new AspectSearchTextFilter(search); _pdrObjectsProvider.addFilter(filter); } } else { if (filter != null) { _pdrObjectsProvider.removeFilter(filter); } } disposeTabItems(); _currentCategoryID = 0; if (_concurring) { buildCategories(new Person[] {_facade.getConcurringPerson()}, _facade.getCurrentAspect()); } else { buildCategories(_facade.getCurrentTreeObjects(), _facade.getCurrentAspect()); } } } @Override public void keyReleased(final KeyEvent e) { if (_searchText.getText().trim().length() == 0) { AspectSearchTextFilter filter = _pdrObjectsProvider.getSearchFilter(); if (filter != null) { _pdrObjectsProvider.removeFilter(filter); disposeTabItems(); if (_concurring) { buildCategories(new Person[] {_facade.getConcurringPerson()}, _facade.getCurrentAspect()); } else { buildCategories(_facade.getCurrentTreeObjects(), _facade.getCurrentAspect()); } } } } }); _searchButton.setToolTipText(NLMessages.getString("View_search_notification")); _searchButton.setImage(_imageReg.get(IconsInternal.SEARCH)); _searchButton.setEnabled(true); _searchButton.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(final SelectionEvent event) { String search = _searchText.getText(); AspectSearchTextFilter filter = _pdrObjectsProvider.getSearchFilter(); if (search.trim().length() > 0) { if (filter != null) { filter.setSearchText(search); } else { filter = new AspectSearchTextFilter(search); _pdrObjectsProvider.addFilter(filter); } } else { if (filter != null) { _pdrObjectsProvider.removeFilter(filter); } } disposeTabItems(); _currentCategoryID = 0; if (_concurring) { buildCategories(new Person[] {_facade.getConcurringPerson()}, _facade.getCurrentAspect()); } else { buildCategories(_facade.getCurrentTreeObjects(), _facade.getCurrentAspect()); } } }); topComposite.layout(); topComposite.pack(); _mainComposite.layout(); _mainComposite.pack(); } createFilters(); createActions(); createContextMenuAction(); createAdditionalAspectsSelectionAdapter(); createMenus(); if (secId != null) { if (secId.startsWith("pdrPo")) //$NON-NLS-1$ { Person p = _facade.getPerson(new PdrId(secId)); if (p != null) { loadPdrObject(new Person[] {p}); setPartName(p.getDisplayName(27)); setTitleToolTip(p.getDisplayName()); } _additional = true; } else if (secId.startsWith("pdrRo")) //$NON-NLS-1$ { ReferenceMods r = _facade.getReference(new PdrId(secId)); _additional = true; if (r != null) { loadPdrObject(new ReferenceMods[] {r}); setPartName(r.getDisplayName(27)); setTitleToolTip(r.getDisplayName()); } } else if (secId.startsWith("pdrAo")) //$NON-NLS-1$ { Aspect a = _facade.getLoadedAspects().get(secId); _additional = true; if (a != null) { loadPdrObject(new Aspect[] {a}); setPartName(a.getDisplayName(27)); setTitleToolTip(a.getDisplayName()); } } else if (secId.startsWith("a") || secId.startsWith("b")) //$NON-NLS-1$ //$NON-NLS-2$ { if (_advanced) { _orderCombo.setEnabled(false); _orderButton.setEnabled(false); _sortedCombo.setEnabled(false); _sortButtonAsc.setEnabled(false); _sortButtonDesc.setEnabled(false); _searchText.setEnabled(false); _searchButton.setEnabled(false); } } } else { if (_advanced) { _orderCombo.setEnabled(false); _orderButton.setEnabled(false); _sortedCombo.setEnabled(false); _sortButtonAsc.setEnabled(false); _sortButtonDesc.setEnabled(false); _searchText.setEnabled(false); _searchButton.setEnabled(false); } } getSite().setSelectionProvider(AspectsView.this); _facade.addObserver(this); } @Override public final void dispose() { _facade.deleteObserver(AspectsView.this); } /** * Dispose tab items. */ private void disposeTabItems() { if (_tabMap != null) { _tabMap.clear(); _tabMap = null; } if (_tabFolderRight != null) { _tabFolderRight.dispose(); } } /** * Fill menu. * @param rootMenuManager the root menu manager */ private void fillMenu(final IMenuManager rootMenuManager) { rootMenuManager.removeAll(); rootMenuManager.add(_onlyNewAspectsAction); rootMenuManager.add(_onlyUpdatedAspectsAction); rootMenuManager.add(_onlyAspectsWithDivergentMarkup); rootMenuManager.add(_excludeObjectRelationsAction); rootMenuManager.add(_referenceFilterAction); rootMenuManager.add(_personFilterAction); rootMenuManager.add(_semanticFilterAction); rootMenuManager.add(_yearFilterAction); rootMenuManager.add(_userFilterAction); if (_currentObjects != null && _currentObjects.length > 0 && _currentObjects[0] instanceof ReferenceMods) { rootMenuManager.add(_onlyAspectsBasedOnReference); rootMenuManager.add(_onlyAspectsAboutReference); } } // /** // * Gets the label of config data. // * @param element the element // * @param type the type // * @param subtype the subtype // * @param role the role // * @return the label of config data // */ // private String getLabelOfConfigData(String element, final String type, // final String subtype, final String role) // { // if (!element.startsWith("aodl:")) // { // element = "aodl:" + element; //$NON-NLS-1$ //$NON-NLS-2$ // } // String label = null; // Vector<String> providers = new Vector<String>(); // for (String s : _facade.getConfigs().keySet()) // { // if (!s.equals(_provider)) // { // providers.add(s); // } // } // HashMap<String, ConfigData> configs = new HashMap<String, ConfigData>(); // if (element != null && type == null) // { // // if (_facade.getConfigs().containsKey(_provider) // && _facade.getConfigs().get(_provider).getChildren() != null // && // _facade.getConfigs().get(_provider).getChildren().containsKey(element)) // { // configs.putAll(_facade.getConfigs().get(_provider).getChildren()); // } // if (configs.get(element) != null) // { // label = configs.get(element).getLabel(); // } // else // { // label = element; // } // } // else if (element != null && type != null && subtype == null) // { // // System.out.println("get label for type " + type); //$NON-NLS-1$ // for (String p : providers) // { // if (_facade.getConfigs().get(p).getChildren().containsKey(element)) // { // configs.putAll(_facade.getConfigs().get(p).getChildren().get(element).getChildren()); // } // } // // System.out.println("markupprovider " + _provider); //$NON-NLS-1$ // // System.out.println("config size1 " + configs.size()); //$NON-NLS-1$ // // if (_facade.getConfigs().containsKey(_provider) // && _facade.getConfigs().get(_provider).getChildren() != null // && // _facade.getConfigs().get(_provider).getChildren().containsKey(element)) // { // configs.putAll(_facade.getConfigs().get(_provider).getChildren().get(element).getChildren()); // } // // System.out.println("config size2 " + configs.size()); //$NON-NLS-1$ // // if (configs.get(type) != null) // { // label = configs.get(type).getLabel(); // } // else // { // label = type; // // System.out.println("get label for label " + label); //$NON-NLS-1$ // } // // } // else if (element != null && type != null && subtype != null && role == // null) // { // for (String provider : providers) // { // if (_facade.getConfigs().get(provider).getChildren().containsKey(element) // && // _facade.getConfigs().get(provider).getChildren().get(element).getChildren() // != null // && // _facade.getConfigs().get(provider).getChildren().get(element).getChildren() // .containsKey(type)) // { // configs.putAll(_facade.getConfigs().get(provider).getChildren().get(element).getChildren() // .get(type).getChildren()); // } // } // if (_facade.getConfigs().containsKey(_provider) // && _facade.getConfigs().get(_provider).getChildren() != null // && _facade.getConfigs().get(_provider).getChildren().containsKey(element) // && // _facade.getConfigs().get(_provider).getChildren().get(element).getChildren() // != null // && // _facade.getConfigs().get(_provider).getChildren().get(element).getChildren().containsKey(type)) // { // configs.putAll(_facade.getConfigs().get(_provider).getChildren().get(element).getChildren().get(type) // .getChildren()); // } // if (configs.get(subtype) != null) // { // label = configs.get(subtype).getLabel(); // } // else // { // label = subtype; // } // } // else if (element != null && type != null && subtype != null && role != // null) // { // for (String provider : providers) // { // if (_facade.getConfigs().get(provider).getChildren().containsKey(element) // && // _facade.getConfigs().get(provider).getChildren().get(element).getChildren() // != null // && // _facade.getConfigs().get(provider).getChildren().get(element).getChildren() // .containsKey(type) // && // _facade.getConfigs().get(provider).getChildren().get(element).getChildren().get(type) // .getChildren() != null // && // _facade.getConfigs().get(provider).getChildren().get(element).getChildren().get(type) // .getChildren().containsKey(subtype)) // { // configs.putAll(_facade.getConfigs().get(provider).getChildren().get(element).getChildren() // .get(type).getChildren().get(subtype).getChildren()); // } // } // if (_facade.getConfigs().containsKey(_provider) // && _facade.getConfigs().get(_provider).getChildren() != null // && _facade.getConfigs().get(_provider).getChildren().containsKey(element) // && // _facade.getConfigs().get(_provider).getChildren().get(element).getChildren() // != null // && // _facade.getConfigs().get(_provider).getChildren().get(element).getChildren().containsKey(type) // && // _facade.getConfigs().get(_provider).getChildren().get(element).getChildren().get(type) // .getChildren() != null // && // _facade.getConfigs().get(_provider).getChildren().get(element).getChildren().get(type) // .getChildren().containsKey(subtype)) // { // configs.putAll(_facade.getConfigs().get(_provider).getChildren().get(element).getChildren().get(type) // .getChildren().get(subtype).getChildren()); // } // // if (configs.get(role) != null) // { // label = configs.get(role).getLabel(); // } // else // { // label = role; // } // } // return label; // } // @Override public final ISelection getSelection() { StructuredSelection selection; if (_currentAspect != null) { selection = new StructuredSelection(new PdrObject[] {_currentAspect}); } else { selection = new StructuredSelection(new PdrObject[] {}); } return selection; } /** * Gets the semantic label. * @param prov the prov * @param semantic the semantic * @return the semantic label */ /** * meth load one aspect, sets layout of text, sets stext and adds * mouselistener for message box and context menu. * @param ca current aspect * @param categorieID category id * @param textComposite textcomposite * @param ti tabitem * @param isSavedAspect aspect is saved * @param markupPresentation markup presentation */ private void loadAspect(final Aspect ca, final Integer categorieID, final Composite textComposite, final CTabItem ti, final boolean isSavedAspect, final IMarkupPresentation markupPresentation) { markupPresentation.setAspect(ca); markupPresentation.setComposite(textComposite); markupPresentation.setSelected(isSavedAspect); if (isSavedAspect) { _tabFolderRight.setData("lastSelected", markupPresentation); //$NON-NLS-1$ } markupPresentation.createPresentation(); createContextMenu(markupPresentation.getControl()); final MarkupTooltip markupTooltipLabel = new MarkupTooltip(textComposite); markupTooltipLabel.setPopupDelay(0); markupTooltipLabel.setHideOnMouseDown(true); markupTooltipLabel.deactivate(); markupPresentation.addSelectionListener(new Listener() { @Override public void handleEvent(final Event arg0) { IMarkupPresentation current = (IMarkupPresentation) arg0.data; _currentAspect = current.getAspect(); _facade.setCurrentAspect(_currentAspect); //$NON-NLS-1$ IMarkupPresentation last = (IMarkupPresentation) _tabFolderRight.getData("lastSelected"); //$NON-NLS-1$ (current).setSelected(true); IStatus sca = new Status(IStatus.INFO, Activator.PLUGIN_ID, "AspectsView current aspect: " + _facade.getCurrentAspect().getPdrId().toString()); //$NON-NLS-1$ iLogger.log(sca); if (last != null && !last.equals(current)) { last.setSelected(false); } _tabFolderRight.setData("lastSelected", current); //$NON-NLS-1$ } }); markupPresentation.addMarkupSelectionListener(new Listener() { @Override public void handleEvent(final Event event) { TaggingRange tr = (TaggingRange) event.data; if (tr != null) { String message; if (!tr.getName().equals("date")) //$NON-NLS-1$ { message = NLMessages.getString("View_markupName") + PDRConfigProvider.getLabelOfMarkup(tr.getName(), null, null, null) + "\n"; //$NON-NLS-1$//$NON-NLS-2$ if (tr.getType() != null) { message = message + NLMessages.getString("View_type") + PDRConfigProvider.getLabelOfMarkup(tr.getName(), tr.getType(), null, null) + "\n"; //$NON-NLS-1$//$NON-NLS-2$ } if (tr.getSubtype() != null && tr.getSubtype().trim().length() > 0) { message = message + NLMessages.getString("View_subtype") + PDRConfigProvider.getLabelOfMarkup(tr.getName(), tr.getType(), tr.getSubtype(), null) + "\n"; //$NON-NLS-1$//$NON-NLS-2$ } if (tr.getRole() != null && tr.getRole().trim().length() > 0) { message = message + NLMessages.getString("View_role") + PDRConfigProvider.getLabelOfMarkup(tr.getName(), tr.getType(), tr.getSubtype(), tr.getRole()) + "\n"; //$NON-NLS-1$//$NON-NLS-2$ } if (tr.getKey() != null && tr.getKey().trim().length() > 0) { message = message + NLMessages.getString("View_key") + tr.getKey(); //$NON-NLS-1$ PdrObject o = _facade.getPdrObject(new PdrId(tr.getKey())); if (o != null) { message = message + " " + o.getDisplayName(); //$NON-NLS-1$ } else { message = message + NLMessages.getString("View_message_missing_dataObject"); } } if (tr.getAna() != null && tr.getAna().trim().length() > 0) { message = message + "\n" + NLMessages.getString("View_lb_lb_owner"); PdrObject o = _facade.getPdrObject(new PdrId(tr.getAna())); if (o != null) { message = message + " " + o.getDisplayNameWithID(); //$NON-NLS-1$ } else { message = message + NLMessages.getString("View_message_missing_dataObject"); } } message = message + "\n" + NLMessages.getString("View_lb_content") + tr.getTextValue(); } else if (tr.getName().equals("date")) //$NON-NLS-1$ { message = NLMessages.getString("View_MarkupDate") + PDRConfigProvider.getLabelOfMarkup(tr.getName(), null, null, null) + "\n"; //$NON-NLS-1$//$NON-NLS-2$ if (tr.getType() != null) { message = message + NLMessages.getString("View_type") + PDRConfigProvider.getLabelOfMarkup(tr.getName(), tr.getType(), null, null) + "\n"; //$NON-NLS-1$//$NON-NLS-2$ } if (tr.getSubtype() != null && tr.getSubtype().trim().length() > 0) { message = message + NLMessages.getString("View_subtype") + PDRConfigProvider.getLabelOfMarkup(tr.getName(), tr.getType(), tr.getSubtype(), null) + "\n"; //$NON-NLS-1$//$NON-NLS-2$ } if (tr.getWhen() != null) { message = message + NLMessages.getString("View_when") + tr.getWhen().toString(); //$NON-NLS-1$ } if (tr.getFrom() != null) { message = message + NLMessages.getString("View_from") + tr.getFrom().toString(); //$NON-NLS-1$ } if (tr.getTo() != null) { message = message + "\n" + NLMessages.getString("View_to") + tr.getTo().toString(); //$NON-NLS-1$ } if (tr.getNotBefore() != null) { message = message + NLMessages.getString("View_notBefore") + tr.getNotBefore().toString(); //$NON-NLS-1$ } if (tr.getNotAfter() != null) { message = message + "\n" + NLMessages.getString("View_NotAfter") + tr.getNotAfter().toString(); //$NON-NLS-1$ } if (tr.getAna() != null && tr.getAna().trim().length() > 0) { message = message + "\n" + NLMessages.getString("View_lb_lb_owner"); PdrObject o = _facade.getPdrObject(new PdrId(tr.getAna())); if (o != null) { message = message + " " + o.getDisplayNameWithID(); //$NON-NLS-1$ } else { message = message + NLMessages.getString("View_message_missing_dataObject"); } } message = message + "\n" + NLMessages.getString("View_lb_content") + tr.getTextValue(); } else { message = NLMessages.getString("View_errorMarkupInfo"); //$NON-NLS-1$ } // MessageDialog.openInformation(parentShell, "", message); //$NON-NLS-1$ // break; // System.out.println("open message " + message); markupTooltipLabel.setToolTipText(message); // markupTooltipLabel.activate(); markupTooltipLabel.show(new Point(event.x + 5, event.y + 10)); } else { markupTooltipLabel.hide(); } } }); markupPresentation.addDoubleClickListener(new Listener() { @Override public void handleEvent(final Event event) { IHandlerService handlerService = (IHandlerService) PlatformUI.getWorkbench().getService( IHandlerService.class); try { handlerService.executeCommand("org.bbaw.pdr.ae.view.main.commands.CallAspectEditor", null); //$NON-NLS-1$ } catch (ExecutionException e) { e.printStackTrace(); } catch (NotDefinedException e) { e.printStackTrace(); } catch (NotEnabledException e) { e.printStackTrace(); } catch (NotHandledException e) { e.printStackTrace(); } } }); ViewHelper.equipWithMouseExitListener(markupPresentation.getControl(), markupTooltipLabel); // XXX RAP auskommentieren // markupPresentation.getControl().addListener(SWT.MouseExit, new // Listener() // { // public void handleEvent(Event event) // { // switch (event.type) // { // case SWT.MouseEnter: // case SWT.MouseMove: // markupTooltipLabel.hide(); // case SWT.MouseExit: // markupTooltipLabel.hide(); // break; // } // } // }); } /** * meth. loads all aspects that belong to the same currently selected * category. * @param orderedAspects ordered aspects * @param categorieID category id * @param startIndex current start index * @param number number of aspects to show on one page * @param savedAspect saved aspect */ private void loadAspects(final Vector<OrderingHead> orderedAspects, final int categorieID, final int startIndex, final int number, final Aspect savedAspect) { final int start; // System.out.println("tabmap hast mapping für " + categorieID + "? : " + tabMap.containsKey(categorieID)); //$NON-NLS-1$ //$NON-NLS-2$ // System.out.println(tabMap.get(categorieID)); CTabItem ti = _tabMap.get(categorieID); ti.setData("loaded", "true"); //$NON-NLS-1$ //$NON-NLS-2$ ScrolledComposite sc = (ScrolledComposite) ti.getControl(); Composite comp = (Composite) sc.getContent(); Control[] children = comp.getChildren(); for (Control c : children) { c.dispose(); } if (!orderedAspects.get(categorieID).isSorted()) { _pdrObjectsProvider.sort(orderedAspects.get(categorieID)); } _aspects = orderedAspects.get(categorieID).getAspects(); // Collections.sort(aspects, new AspectsByCronComparator()); IStatus sla = new Status(IStatus.INFO, Activator.PLUGIN_ID, "CategoryView load aspects - number of aspects: " + _aspects.size()); //$NON-NLS-1$ //$NON-NLS-2$ iLogger.log(sla); if (_aspects != null) { final int size = _aspects.size(); //$NON-NLS-1$ Label eventNumber = new Label(comp, SWT.NONE); int endIndex = startIndex + 10; if (endIndex > size) { endIndex = size; } eventNumber .setText(NLMessages.getString("View_allTogether") + " " + size + " " + NLMessages.getString("View_aspects") + //$NON-NLS-1$ //$NON-NLS-2$ " " + (startIndex + 1) + " - " + endIndex); //$NON-NLS-1$ if (size > 10) { start = startIndex; Group eventNavBar = new Group(comp, SWT.NONE); eventNavBar.setText(NLMessages.getString("View_scroll")); //$NON-NLS-1$ eventNavBar.setLayout(new RowLayout()); Button toStart = new Button(eventNavBar, SWT.PUSH); toStart.setText(" |< "); //$NON-NLS-1$ toStart.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(final SelectionEvent arg0) { loadAspects(orderedAspects, categorieID, 0, number, null); } }); final Button minusFifty = new Button(eventNavBar, SWT.PUSH); minusFifty.setText(" -50 "); //$NON-NLS-1$ if (start - 50 < 0) { minusFifty.setEnabled(false); } else { minusFifty.setEnabled(true); } minusFifty.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(final SelectionEvent arg0) { int nextStart = start - 50; loadAspects(orderedAspects, categorieID, nextStart, number, null); } }); final Button minusTwen = new Button(eventNavBar, SWT.PUSH); minusTwen.setText(" -20 "); //$NON-NLS-1$ if (start - 20 < 0) { minusTwen.setEnabled(false); } else { minusTwen.setEnabled(true); } minusTwen.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(final SelectionEvent arg0) { int nextStart = start - 20; loadAspects(orderedAspects, categorieID, nextStart, number, null); } }); final Button minusTen = new Button(eventNavBar, SWT.PUSH); minusTen.setText(" -10 "); //$NON-NLS-1$ if (start - 10 < 0) { minusTen.setEnabled(false); } else { minusTen.setEnabled(true); } minusTen.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(final SelectionEvent arg0) { int nextStart = start - 10; loadAspects(orderedAspects, categorieID, nextStart, number, null); } }); final Button minusOne = new Button(eventNavBar, SWT.PUSH); minusOne.setText(" -1 "); //$NON-NLS-1$ if (start - 1 < 0) { minusOne.setEnabled(false); } else { minusOne.setEnabled(true); } minusOne.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(final SelectionEvent arg0) { int nextStart = start - 1; loadAspects(orderedAspects, categorieID, nextStart, number, null); } }); final Text jumpTo = new Text(eventNavBar, SWT.BORDER); jumpTo.setSize(15, 20); Button okButton = new Button(eventNavBar, SWT.PUSH); okButton.setText(NLMessages.getString("View_ok")); //$NON-NLS-1$ okButton.setToolTipText(NLMessages.getString("View_jump_to_aspect_tooltip")); okButton.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(final SelectionEvent arg0) { try { if (jumpTo.getText().length() > 0) { int n = Integer.parseInt(jumpTo.getText()); if (n > 0 && n <= size) { loadAspects(orderedAspects, categorieID, --n, number, null); } } } catch (NumberFormatException ex) { String message = NLMessages.getString("View_pleaseEnterNumber"); //$NON-NLS-1$ MessageDialog.openInformation(_parentShell, NLMessages.getString("View_error"), message); //$NON-NLS-1$ // } } }); final Button plusOne = new Button(eventNavBar, SWT.PUSH); plusOne.setText(" +1 "); //$NON-NLS-1$ if (start + 1 >= size) { plusOne.setEnabled(false); } else { plusOne.setEnabled(true); } plusOne.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(final SelectionEvent arg0) { int nextStart = start + 1; loadAspects(orderedAspects, categorieID, nextStart, number, null); } }); final Button plusTen = new Button(eventNavBar, SWT.PUSH); plusTen.setText(" +10 "); //$NON-NLS-1$ if (start + 10 >= size) { plusTen.setEnabled(false); } else { plusTen.setEnabled(true); } plusTen.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(final SelectionEvent arg0) { int nextStart = start + 10; loadAspects(orderedAspects, categorieID, nextStart, number, null); } }); final Button plusTwen = new Button(eventNavBar, SWT.PUSH); plusTwen.setText(" +20 "); //$NON-NLS-1$ if (start + 20 >= size) { plusTwen.setEnabled(false); } else { plusTwen.setEnabled(true); } plusTwen.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(final SelectionEvent arg0) { int nextStart = start + 20; loadAspects(orderedAspects, categorieID, nextStart, number, null); } }); final Button plusFifty = new Button(eventNavBar, SWT.PUSH); plusFifty.setText(" +50 "); //$NON-NLS-1$ if (start + 50 >= size) { plusFifty.setEnabled(false); } else { plusFifty.setEnabled(true); } plusFifty.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(final SelectionEvent arg0) { int nextStart = start + 50; loadAspects(orderedAspects, categorieID, nextStart, number, null); } }); } else { start = 0; } int i = start; // int end = i + number; while (i < start + number) { if (size > i) { final Aspect ca = _aspects.get(i); //$NON-NLS-1$ RightsChecker rc = new RightsChecker(); final IMarkupPresentation markupPresentation = ControlExtensions.createMarkupPresentation(); if (rc.mayRead(ca) && markupPresentation != null) { Composite textComp = new Composite(comp, SWT.LEFT | SWT.BORDER); textComp.setBackground(WHITE_COLOR); textComp.setLayoutData(new GridData()); ((GridData) textComp.getLayoutData()).grabExcessHorizontalSpace = true; ((GridData) textComp.getLayoutData()).horizontalAlignment = SWT.FILL; textComp.setLayout(new GridLayout()); ((GridLayout) textComp.getLayout()).numColumns = 2; ((GridLayout) textComp.getLayout()).marginHeight = 0; ((GridLayout) textComp.getLayout()).marginWidth = 0; // StyledText stext = new StyledText(textComp, SWT.WRAP // | SWT.NO_BACKGROUND | SWT.NO_FOCUS | SWT.CURSOR_ARROW // ); loadAspect(ca, categorieID, textComp, ti, ca.equals(savedAspect), markupPresentation); Composite rightcomp = new Composite(textComp, SWT.RIGHT | SWT.TOP); rightcomp.setBackground(WHITE_COLOR); rightcomp.setLayout(new GridLayout()); ((GridLayout) rightcomp.getLayout()).numColumns = 2; rightcomp.setLayoutData(new GridData()); ((GridData) rightcomp.getLayoutData()).verticalAlignment = SWT.TOP; ((GridData) rightcomp.getLayoutData()).horizontalAlignment = SWT.RIGHT; Label blancLabel = new Label(rightcomp, SWT.NONE); blancLabel.setText(""); blancLabel.setBackground(WHITE_COLOR); blancLabel.setLayoutData(new GridData()); blancLabel.pack(); final Button editButton = new Button(rightcomp, SWT.PUSH); editButton.setImage(_imageReg.get(IconsInternal.EDIT)); editButton.setToolTipText("Aspekt in Editor bearbeiten"); editButton.setData(markupPresentation); editButton.setEnabled((rc.mayWrite(ca))); editButton.setLayoutData(new GridData()); ((GridData) editButton.getLayoutData()).verticalAlignment = SWT.TOP; ((GridData) editButton.getLayoutData()).horizontalAlignment = SWT.RIGHT; editButton.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent se) { IMarkupPresentation current = (IMarkupPresentation) editButton.getData(); //$NON-NLS-1$ _facade.setCurrentAspect(current.getAspect()); markupPresentation.setSelected(true); IMarkupPresentation last = (IMarkupPresentation) _tabFolderRight .getData("lastSelected"); //$NON-NLS-1$ IStatus sca = new Status( IStatus.INFO, Activator.PLUGIN_ID, "AspectsView current aspect: " + _facade.getCurrentAspect().getPdrId().toString()); //$NON-NLS-1$ iLogger.log(sca); if (last != null && !last.equals(markupPresentation)) { last.setSelected(false); } _tabFolderRight.setData("lastSelected", markupPresentation); //$NON-NLS-1$ IHandlerService handlerService = (IHandlerService) PlatformUI.getWorkbench() .getService(IHandlerService.class); try { handlerService.executeCommand( "org.bbaw.pdr.ae.view.main.commands.CallAspectEditor", null); //$NON-NLS-1$ } catch (ExecutionException e) { e.printStackTrace(); } catch (NotDefinedException e) { e.printStackTrace(); } catch (NotEnabledException e) { e.printStackTrace(); } catch (NotHandledException e) { e.printStackTrace(); } } }); editButton.pack(); if (!_pdrObjectsProvider.isOrderedBySemantic() || !_pdrObjectsProvider.isShownByPerson()) { if (!_pdrObjectsProvider.isOrderedBySemantic()) { for (SemanticStm sStm : ca.getSemanticDim().getSemanticStms()) { Label imLabel = new Label(rightcomp, SWT.NONE); if (sStm.getLabel().startsWith("NormName") || _facade.getPersonDisplayNameTags(_provider).contains(sStm.getLabel())) { imLabel.setImage(_imageReg.get(IconsInternal.CLASSIFICATION_NAME_NORM)); } else if (sStm.getLabel().equals("Name") || _facade.getPersonNameTags(_provider).contains(sStm.getLabel())) { imLabel.setImage(_imageReg.get(IconsInternal.CLASSIFICATION_NAME)); } else { imLabel.setImage(_imageReg.get(IconsInternal.CLASSIFICATION)); } imLabel.setLayoutData(new GridData()); imLabel.pack(); Label semantic = new Label(rightcomp, SWT.NONE); semantic.setText(PDRConfigProvider.getSemanticLabel(sStm.getProvider(), sStm.getLabel())); semantic.setBackground(WHITE_COLOR); semantic.setLayoutData(new GridData()); semantic.pack(); } } if (!_pdrObjectsProvider.isShownByPerson()) { for (RelationStm rStm : ca.getRelationDim().getRelationStms()) { if (rStm.getSubject().equals(ca.getPdrId()) && rStm.getRelations() != null && rStm.getRelations().firstElement() != null && rStm.getRelations().firstElement().getObject() != null) { Label imLabel = new Label(rightcomp, SWT.NONE); imLabel.setToolTipText(NLMessages.getString("View_message_aspect_belongsto")); final String id = rStm.getRelations().firstElement().getObject().toString(); String name = id; PdrObject obj = _facade.getPdrObject(new PdrId(id)); if (obj != null) { name = obj.getDisplayName(27); if (id.startsWith("pdrPo")) //$NON-NLS-1$ { imLabel.setImage(_imageReg.get(IconsInternal.PERSON)); } if (id.startsWith("pdrAo")) //$NON-NLS-1$ { imLabel.setImage(_imageReg.get(IconsInternal.ASPECT)); } if (id.startsWith("pdrRo")) //$NON-NLS-1$ { imLabel.setImage(_imageReg.get(IconsInternal.REFERENCE)); } } imLabel.setLayoutData(new GridData()); imLabel.pack(); Link person = new Link(rightcomp, SWT.NONE); person.addSelectionListener(_aspectsSelectionAdapter); person.setText("<a href=\"native\">" + name + "</a>"); person.setToolTipText(obj.getDisplayName()); person.setData(id); person.setBackground(WHITE_COLOR); person.setLayoutData(new GridData()); person.pack(); } } } // rightcomp.layout(); rightcomp.pack(); } // textComp.layout(); textComp.pack(); i++; } } else { break; } } } sc.setContent(comp); sc.setMinSize(comp.computeSize(SWT.DEFAULT, SWT.DEFAULT)); comp.layout(); } /** * Load pdr object. * @param pdrObjects the pdr objects */ private void loadPdrObject(final PdrObject[] pdrObjects) { if (pdrObjects != null) { _currentObjects = pdrObjects; _provider = Platform .getPreferencesService() .getString(CommonActivator.PLUGIN_ID, "PRIMARY_SEMANTIC_PROVIDER", AEConstants.CLASSIFICATION_AUTHORITY, null).toUpperCase(); //$NON-NLS-1$ // System.out.println("cat view load pdr object _provider " + _provider); //$NON-NLS-1$ if (_tabFolderRight != null) { _tabFolderRight.dispose(); } _pdrObjectsProvider.setInput(_currentObjects); _pdrObjectsProvider.setLazySorting(false); _pdrObjectsProvider.removeAllFilters(); _onlyNewAspectsAction.setChecked(false); _onlyUpdatedAspectsAction.setChecked(false); _excludeObjectRelationsAction.setChecked(false); _referenceFilterAction.setChecked(false); _userFilterAction.setChecked(false); _semanticFilterAction.setChecked(false); _personFilterAction.setChecked(false); _yearFilterAction.setChecked(false); _onlyAspectsAboutReference.setEnabled(false); _onlyAspectsBasedOnReference.setEnabled(false); _onlyNewAspectsAction.setEnabled(true); _onlyUpdatedAspectsAction.setEnabled(true); _onlyAspectsWithDivergentMarkup.setEnabled(true); _excludeObjectRelationsAction.setEnabled(true); _referenceFilterAction.setEnabled(true); _userFilterAction.setEnabled(true); _semanticFilterAction.setEnabled(true); _personFilterAction.setEnabled(true); _yearFilterAction.setEnabled(true); _onlyAspectsAboutReference.setEnabled(true); _onlyAspectsBasedOnReference.setEnabled(true); createMenus(); if (_currentObjects != null) { if (_facade.getCurrentAspect() != null && _facade.getCurrentAspect().getPdrId() != null && _currentObjects != null && _currentObjects.length > 0 && _currentObjects[_currentObjects.length - 1] != null && _currentObjects[_currentObjects.length - 1].getAspectIds().contains( _facade.getCurrentAspect().getPdrId().toString())) { buildCategories(_currentObjects, _facade.getCurrentAspect()); } else { buildCategories(_currentObjects, null); } } _tabFolderRight.setSelection(_currentCategoryID); } } @Override public final void removeSelectionChangedListener(final ISelectionChangedListener listener) { _selectionChangedListeners.remove(listener); } /** * registers changed selection. * @param part workbench part * @param selection new selection */ public void selectionChanged(final IWorkbenchPart part, final ISelection selection) { } @Override public final void setFocus() { if (_tabFolderRight != null && !_tabFolderRight.isDisposed()) { _tabFolderRight.setFocus(); } } @Override public final void setSelection(final ISelection arg0) { // TODO Auto-generated method stub } @Override public final void update(final Observable o, final Object arg) { IStatus supdate = new Status(IStatus.INFO, Activator.PLUGIN_ID, "AspectsView update: " + arg); //$NON-NLS-1$ iLogger.log(supdate); if (!_concurring && !_additional) { if (_facade.getCurrentTreeObjects() != null) { if (_advanced) { _orderCombo.setEnabled(true); _orderButton.setEnabled(true); _sortedCombo.setEnabled(true); _sortButtonAsc.setEnabled(true); _sortButtonDesc.setEnabled(true); _searchText.setEnabled(true); _searchButton.setEnabled(true); } } if (arg.equals("newTreeObjects")) //$NON-NLS-1$ //$NON-NLS-2$ { _currentCategoryID = 0; loadPdrObject(_facade.getCurrentTreeObjects()); } else if (arg.equals("newNewAspect")) //$NON-NLS-1$ //$NON-NLS-2$ { loadPdrObject(_facade.getCurrentTreeObjects()); } else if (arg.equals("refreshAll")) //$NON-NLS-1$ { disposeTabItems(); } else if (arg.equals("newAspect") && _tabFolderRight != null && !_tabFolderRight.isDisposed()) //$NON-NLS-1$ { if (_tabFolderRight != null) { IMarkupPresentation last = (IMarkupPresentation) _tabFolderRight.getData("lastSelected"); //$NON-NLS-1$ if (last != null && !_facade.getCurrentAspect().equals(last.getAspect())) //$NON-NLS-1$ { last.setSelected(false); } } } } else if (!_additional) { if (_facade.getConcurringPerson() != null) { if (_advanced) { _orderCombo.setEnabled(true); _orderButton.setEnabled(true); _sortedCombo.setEnabled(true); _sortButtonAsc.setEnabled(true); _sortButtonDesc.setEnabled(true); _searchText.setEnabled(true); _searchButton.setEnabled(true); } } if (arg.equals("newConcurringPerson")) //$NON-NLS-1$ //$NON-NLS-2$ { _currentCategoryID = 0; loadPdrObject(new Person[] {_facade.getConcurringPerson()}); } else if (arg.equals("newNewAspect")) //$NON-NLS-1$ //$NON-NLS-2$ { loadPdrObject(new Person[] {_facade.getConcurringPerson()}); } else if (arg.equals("noSelectedConcurringPerson")) //$NON-NLS-1$ { disposeTabItems(); } else if (arg.equals("newAspect") && _tabFolderRight != null) //$NON-NLS-1$ { if (_tabFolderRight != null && !_tabFolderRight.isDisposed()) { IMarkupPresentation last = (IMarkupPresentation) _tabFolderRight.getData("lastSelected"); //$NON-NLS-1$ if (last != null && !_facade.getCurrentAspect().equals(last.getAspect())) //$NON-NLS-1$ { last.setSelected(false); } } } } else if (_additional) { if (arg.equals("newAspect") && _tabFolderRight != null) //$NON-NLS-1$ { if (_tabFolderRight != null && !_tabFolderRight.isDisposed()) { IMarkupPresentation last = (IMarkupPresentation) _tabFolderRight.getData("lastSelected"); //$NON-NLS-1$ if (last != null && !_facade.getCurrentAspect().equals(last.getAspect())) //$NON-NLS-1$ { last.setSelected(false); } } } } } /** * Update filter. * @param action the action */ private void updateFilter(final Action action) { if (action == _onlyNewAspectsAction) { if (action.isChecked()) { _pdrObjectsProvider.addFilter(_onlyNewAspectsFilter); } else { _pdrObjectsProvider.removeFilter(_onlyNewAspectsFilter); } } else if (action == _onlyUpdatedAspectsAction) { if (action.isChecked()) { _pdrObjectsProvider.addFilter(_onlyUpdatedAspectsFilter); } else { _pdrObjectsProvider.removeFilter(_onlyUpdatedAspectsFilter); } } else if (action == _onlyAspectsWithDivergentMarkup) { if (action.isChecked()) { _pdrObjectsProvider.addFilter(_onlyAspectsDivergentMarkupFilter); } else { _pdrObjectsProvider.removeFilter(_onlyAspectsDivergentMarkupFilter); } } else if (action == _excludeObjectRelationsAction) { if (action.isChecked()) { Vector<String> ids = new Vector<String>(_facade.getCurrentTreeObjects().length); for (int i = 0; i < _facade.getCurrentTreeObjects().length; i++) { ids.add(_facade.getCurrentTreeObjects()[i].getPdrId().toString()); } ((AspectExcludeObjectRelationsFilter) _aspectExludeObjectRelationsFilter).setPersonIds(ids); _pdrObjectsProvider.addFilter(_aspectExludeObjectRelationsFilter); } else { _pdrObjectsProvider.removeFilter(_aspectExludeObjectRelationsFilter); } } else if (action == _onlyAspectsAboutReference) { if (action.isChecked()) { Vector<String> ids = new Vector<String>(_facade.getCurrentTreeObjects().length); for (int i = 0; i < _facade.getCurrentTreeObjects().length; i++) { ids.add(_facade.getCurrentTreeObjects()[i].getPdrId().toString()); } ((OnlyAspectsAboutReferenceFilter) _onlyAspectsAboutReferenceFilter).setObjectIds(ids); _pdrObjectsProvider.addFilter(_onlyAspectsAboutReferenceFilter); } else { _pdrObjectsProvider.removeFilter(_onlyAspectsAboutReferenceFilter); } } else if (action == _onlyAspectsBasedOnReference) { if (action.isChecked()) { Vector<String> ids = new Vector<String>(_facade.getCurrentTreeObjects().length); for (int i = 0; i < _facade.getCurrentTreeObjects().length; i++) { ids.add(_facade.getCurrentTreeObjects()[i].getPdrId().toString()); } ((OnlyAspectsBasedOnReferenceFilter) _onlyAspectsBasedOnReferenceFilter).setObjectIds(ids); _pdrObjectsProvider.addFilter(_onlyAspectsBasedOnReferenceFilter); } else { _pdrObjectsProvider.removeFilter(_onlyAspectsBasedOnReferenceFilter); } } disposeTabItems(); buildCategories(_currentObjects, _facade.getCurrentAspect()); } public PDRObjectsProvider getPdrObjectsProvider() { return _pdrObjectsProvider; } }