Search in sources :

Example 1 with CompatibilityService

use of eu.esdihumboldt.hale.ui.common.service.compatibility.CompatibilityService in project hale by halestudio.

the class FunctionsView method dispose.

@Override
public void dispose() {
    if (compListener != null) {
        CompatibilityService cs = PlatformUI.getWorkbench().getService(CompatibilityService.class);
        cs.removeListener(compListener);
    }
    if (alignListener != null) {
        AlignmentService as = PlatformUI.getWorkbench().getService(AlignmentService.class);
        as.removeListener(alignListener);
    }
    super.dispose();
}
Also used : AlignmentService(eu.esdihumboldt.hale.ui.service.align.AlignmentService) CompatibilityService(eu.esdihumboldt.hale.ui.common.service.compatibility.CompatibilityService)

Example 2 with CompatibilityService

use of eu.esdihumboldt.hale.ui.common.service.compatibility.CompatibilityService in project hale by halestudio.

the class AlignmentView method createViewControl.

/**
 * @see eu.esdihumboldt.hale.ui.views.mapping.AbstractMappingView#createViewControl(org.eclipse.swt.widgets.Composite)
 */
@Override
public void createViewControl(Composite parent) {
    Composite page = new Composite(parent, SWT.NONE);
    page.setLayout(GridLayoutFactory.fillDefaults().create());
    // create type relation selection control
    sourceTargetSelector = new SourceTargetTypeSelector(page);
    sourceTargetSelector.getControl().setLayoutData(GridDataFactory.swtDefaults().align(SWT.FILL, SWT.CENTER).grab(true, false).create());
    sourceTargetSelector.addSelectionChangedListener(new ISelectionChangedListener() {

        @Override
        public void selectionChanged(SelectionChangedEvent event) {
            getViewer().setInput(sourceTargetSelector.getSelectedCell());
            if (deactivatedCellFilterAction != null) {
                deactivatedCellFilterAction.setEnabled(sourceTargetSelector.isCellSelected());
                if (!sourceTargetSelector.isCellSelected())
                    deactivatedCellFilterAction.setChecked(true);
            }
            refreshGraph();
        }
    });
    // typeRelations = new ComboViewer(page, SWT.DROP_DOWN | SWT.READ_ONLY);
    // typeRelations.setContentProvider(ArrayContentProvider.getInstance());
    // typeRelations.setLabelProvider(new LabelProvider() {
    // 
    // @Override
    // public Image getImage(Object element) {
    // if (element instanceof Cell) {
    // // use function image if possible
    // Cell cell = (Cell) element;
    // String functionId = cell.getTransformationIdentifier();
    // AbstractFunction<?> function = FunctionUtil.getFunction(functionId);
    // if (function != null) {
    // return functionLabels.getImage(function);
    // }
    // return null;
    // }
    // 
    // return super.getImage(element);
    // }
    // 
    // @Override
    // public String getText(Object element) {
    // if (element instanceof Cell) {
    // Cell cell = (Cell) element;
    // 
    // return CellUtil.getCellDescription(cell);
    // }
    // 
    // return super.getText(element);
    // }
    // 
    // });
    // typeRelations.addSelectionChangedListener(new ISelectionChangedListener() {
    // 
    // @Override
    // public void selectionChanged(SelectionChangedEvent event) {
    // updateGraph();
    // }
    // });
    // typeRelations.getControl().setLayoutData(
    // GridDataFactory.swtDefaults().align(SWT.FILL, SWT.CENTER).grab(true, false)
    // .create());
    // create viewer
    Composite viewerContainer = new Composite(page, SWT.NONE);
    viewerContainer.setLayout(new FillLayout());
    viewerContainer.setLayoutData(GridDataFactory.fillDefaults().grab(true, true).create());
    super.createViewControl(viewerContainer);
    updateLayout(false);
    AlignmentService as = PlatformUI.getWorkbench().getService(AlignmentService.class);
    // update();
    as.addListener(alignmentListener = new AlignmentServiceAdapter() {

        @Override
        public void alignmentCleared() {
            PlatformUI.getWorkbench().getDisplay().syncExec(new Runnable() {

                @Override
                public void run() {
                    sourceTargetSelector.setSelection(StructuredSelection.EMPTY);
                }
            });
        }

        @Override
        public void cellsRemoved(Iterable<Cell> cells) {
            if (sourceTargetSelector.isCellSelected() && Iterables.contains(cells, sourceTargetSelector.getSelectedCell()))
                sourceTargetSelector.setSelection(StructuredSelection.EMPTY);
            refreshGraph();
        }

        @Override
        public void cellsReplaced(Map<? extends Cell, ? extends Cell> cells) {
            if (sourceTargetSelector.isCellSelected() && cells.keySet().contains(sourceTargetSelector.getSelectedCell()))
                sourceTargetSelector.setSelection(StructuredSelection.EMPTY);
            refreshGraph();
        }

        @Override
        public void cellsAdded(Iterable<Cell> cells) {
            refreshGraph();
        }

        @Override
        public void alignmentChanged() {
            PlatformUI.getWorkbench().getDisplay().syncExec(new Runnable() {

                @Override
                public void run() {
                    sourceTargetSelector.setSelection(StructuredSelection.EMPTY);
                }
            });
        }

        @Override
        public void cellsPropertyChanged(Iterable<Cell> cells, String propertyName) {
            refreshGraph();
        }

        @Override
        public void customFunctionsChanged() {
            refreshGraph();
        }
    });
    TaskService taskService = PlatformUI.getWorkbench().getService(TaskService.class);
    taskService.addListener(tasksListener = new TaskServiceListener() {

        @Override
        public void tasksRemoved(Iterable<Task<?>> tasks) {
            refreshGraph();
        }

        @Override
        public void tasksAdded(Iterable<Task<?>> tasks) {
            refreshGraph();
        }

        @Override
        public void taskUserDataChanged(ResolvedTask<?> task) {
            refreshGraph();
        }
    });
    // initialize compatibility checkup and display
    CompatibilityService cs = PlatformUI.getWorkbench().getService(CompatibilityService.class);
    cs.addListener(compListener = new ExclusiveExtensionListener<CompatibilityMode, CompatibilityModeFactory>() {

        @Override
        public void currentObjectChanged(final CompatibilityMode arg0, final CompatibilityModeFactory arg1) {
            refreshGraph();
        }
    });
    // listen on SchemaSelections
    getSite().getWorkbenchWindow().getSelectionService().addPostSelectionListener(selectionListener = new ISelectionListener() {

        @Override
        public void selectionChanged(IWorkbenchPart part, ISelection selection) {
            if (!(selection instanceof SchemaSelection)) {
                // only react on schema selections
                return;
            }
            if (part != AlignmentView.this) {
                updateRelation((SchemaSelection) selection);
            }
        }
    });
    // select type cell, if it is double clicked
    getViewer().addDoubleClickListener(new IDoubleClickListener() {

        @Override
        public void doubleClick(DoubleClickEvent event) {
            IStructuredSelection selection = (IStructuredSelection) event.getSelection();
            if (selection.size() == 1) {
                Object selected = selection.getFirstElement();
                if (selected instanceof Cell && AlignmentUtil.isTypeCell((Cell) selected))
                    sourceTargetSelector.setSelection(selection);
            }
        }
    });
    // listen on size changes
    getViewer().getControl().addControlListener(new ControlAdapter() {

        @Override
        public void controlResized(ControlEvent e) {
            updateLayout(true);
        }
    });
    getViewer().setInput(new DefaultCell());
}
Also used : CompatibilityModeFactory(eu.esdihumboldt.hale.ui.common.service.compatibility.CompatibilityModeFactory) ControlAdapter(org.eclipse.swt.events.ControlAdapter) SelectionChangedEvent(org.eclipse.jface.viewers.SelectionChangedEvent) IStructuredSelection(org.eclipse.jface.viewers.IStructuredSelection) SourceTargetTypeSelector(eu.esdihumboldt.hale.ui.function.common.SourceTargetTypeSelector) ISelectionListener(org.eclipse.ui.ISelectionListener) IWorkbenchPart(org.eclipse.ui.IWorkbenchPart) AlignmentService(eu.esdihumboldt.hale.ui.service.align.AlignmentService) ResolvedTask(eu.esdihumboldt.hale.common.tasks.ResolvedTask) IDoubleClickListener(org.eclipse.jface.viewers.IDoubleClickListener) ISelection(org.eclipse.jface.viewers.ISelection) CompatibilityService(eu.esdihumboldt.hale.ui.common.service.compatibility.CompatibilityService) SchemaSelection(eu.esdihumboldt.hale.ui.selection.SchemaSelection) DefaultCell(eu.esdihumboldt.hale.common.align.model.impl.DefaultCell) BaseAlignmentCell(eu.esdihumboldt.hale.common.align.model.BaseAlignmentCell) Cell(eu.esdihumboldt.hale.common.align.model.Cell) Composite(org.eclipse.swt.widgets.Composite) CompatibilityMode(eu.esdihumboldt.hale.common.align.compatibility.CompatibilityMode) TaskService(eu.esdihumboldt.hale.common.tasks.TaskService) ISelectionChangedListener(org.eclipse.jface.viewers.ISelectionChangedListener) ExclusiveExtensionListener(de.fhg.igd.eclipse.util.extension.exclusive.ExclusiveExtension.ExclusiveExtensionListener) DoubleClickEvent(org.eclipse.jface.viewers.DoubleClickEvent) FillLayout(org.eclipse.swt.layout.FillLayout) DefaultCell(eu.esdihumboldt.hale.common.align.model.impl.DefaultCell) TaskServiceListener(eu.esdihumboldt.hale.common.tasks.TaskServiceListener) ControlEvent(org.eclipse.swt.events.ControlEvent) AlignmentServiceAdapter(eu.esdihumboldt.hale.ui.service.align.AlignmentServiceAdapter) Map(java.util.Map)

Example 3 with CompatibilityService

use of eu.esdihumboldt.hale.ui.common.service.compatibility.CompatibilityService in project hale by halestudio.

the class FunctionsView method createViewControl.

/**
 * @see eu.esdihumboldt.hale.ui.views.properties.PropertiesViewPart#createViewControl(org.eclipse.swt.widgets.Composite)
 */
@Override
public void createViewControl(Composite parent) {
    viewer = new TreeViewer(parent);
    viewer.setLabelProvider(new FunctionLabelProvider());
    viewer.setContentProvider(new FunctionContentProvider(HaleUI.getServiceProvider()));
    IToolBarManager manager = getViewSite().getActionBars().getToolBarManager();
    IAction filterAction = new FilterAction("Filter incompatible functions", Action.AS_CHECK_BOX, CommonSharedImages.getImageRegistry().getDescriptor("IMG_FILTER_CLEAR"));
    manager.add(filterAction);
    filterAction.setChecked(true);
    filterAction.run();
    CompatibilityService cs = PlatformUI.getWorkbench().getService(CompatibilityService.class);
    cs.addListener(compListener = new ExclusiveExtensionListener<CompatibilityMode, CompatibilityModeFactory>() {

        @Override
        public void currentObjectChanged(CompatibilityMode current, CompatibilityModeFactory definition) {
            // refresh the viewer when the compatibility mode is
            // changed
            final Display display = PlatformUI.getWorkbench().getDisplay();
            display.syncExec(new Runnable() {

                @Override
                public void run() {
                    viewer.refresh();
                }
            });
        }
    });
    AlignmentService as = PlatformUI.getWorkbench().getService(AlignmentService.class);
    as.addListener(alignListener = new AlignmentServiceAdapter() {

        @Override
        public void alignmentCleared() {
            customFunctionsChanged();
        }

        @Override
        public void customFunctionsChanged() {
            // refresh the viewer when the compatibility mode is changed
            final Display display = PlatformUI.getWorkbench().getDisplay();
            display.syncExec(new Runnable() {

                @Override
                public void run() {
                    viewer.refresh();
                }
            });
        }
    });
    // no input needed, but we have to set something
    viewer.setInput(Boolean.TRUE);
    new ViewerMenu(getSite(), viewer);
    getSite().setSelectionProvider(viewer);
}
Also used : IAction(org.eclipse.jface.action.IAction) CompatibilityModeFactory(eu.esdihumboldt.hale.ui.common.service.compatibility.CompatibilityModeFactory) CompatibilityMode(eu.esdihumboldt.hale.common.align.compatibility.CompatibilityMode) TreeViewer(org.eclipse.jface.viewers.TreeViewer) ExclusiveExtensionListener(de.fhg.igd.eclipse.util.extension.exclusive.ExclusiveExtension.ExclusiveExtensionListener) ViewerMenu(eu.esdihumboldt.hale.ui.util.viewer.ViewerMenu) FunctionLabelProvider(eu.esdihumboldt.hale.ui.common.function.viewer.FunctionLabelProvider) IToolBarManager(org.eclipse.jface.action.IToolBarManager) AlignmentService(eu.esdihumboldt.hale.ui.service.align.AlignmentService) CompatibilityService(eu.esdihumboldt.hale.ui.common.service.compatibility.CompatibilityService) FunctionContentProvider(eu.esdihumboldt.hale.ui.common.function.viewer.FunctionContentProvider) AlignmentServiceAdapter(eu.esdihumboldt.hale.ui.service.align.AlignmentServiceAdapter) Display(org.eclipse.swt.widgets.Display)

Example 4 with CompatibilityService

use of eu.esdihumboldt.hale.ui.common.service.compatibility.CompatibilityService in project hale by halestudio.

the class AlignmentView method dispose.

/**
 * @see WorkbenchPart#dispose()
 */
@Override
public void dispose() {
    if (alignmentListener != null) {
        AlignmentService as = PlatformUI.getWorkbench().getService(AlignmentService.class);
        as.removeListener(alignmentListener);
    }
    if (compListener != null) {
        CompatibilityService cs = PlatformUI.getWorkbench().getService(CompatibilityService.class);
        cs.removeListener(compListener);
    }
    if (selectionListener != null) {
        getSite().getWorkbenchWindow().getSelectionService().removePostSelectionListener(selectionListener);
    }
    if (tasksListener != null) {
        TaskService ts = PlatformUI.getWorkbench().getService(TaskService.class);
        ts.removeListener(tasksListener);
    }
    functionLabels.dispose();
    super.dispose();
}
Also used : AlignmentService(eu.esdihumboldt.hale.ui.service.align.AlignmentService) TaskService(eu.esdihumboldt.hale.common.tasks.TaskService) CompatibilityService(eu.esdihumboldt.hale.ui.common.service.compatibility.CompatibilityService)

Example 5 with CompatibilityService

use of eu.esdihumboldt.hale.ui.common.service.compatibility.CompatibilityService in project hale by halestudio.

the class AddConditionContextContribution method fill.

@Override
public void fill(Menu menu, int index) {
    ISelection selection = getSelection();
    if (selection != null && !selection.isEmpty() && selection instanceof IStructuredSelection) {
        Object element = ((IStructuredSelection) selection).getFirstElement();
        if (element instanceof EntityDefinition) {
            /*
				 * Determine available filters and filter UI for current
				 * compatibility mode.
				 */
            // get all filters supported by the compatibility mode
            CompatibilityService cs = PlatformUI.getWorkbench().getService(CompatibilityService.class);
            Set<String> supportedFilters = cs.getCurrentDefinition().getSupportedFilters();
            // get filter dialog definitions for those filters
            Map<String, FilterDialogDefinition> definitions = new HashMap<>();
            for (String filterId : supportedFilters) {
                FilterDialogDefinition def = FilterUIExtension.getInstance().getFactory(filterId);
                if (def != null) {
                    definitions.put(filterId, def);
                }
            }
            if (definitions.isEmpty()) {
                return;
            }
            // basics for dialog configuration
            EntityDefinition entityDef = (EntityDefinition) element;
            String title;
            if (entityDef.getPropertyPath().isEmpty())
                title = "Type condition";
            else
                title = "Property condition";
            String message = "Define the condition for the new context";
            // add items for each filter type
            for (Entry<String, FilterDialogDefinition> entry : definitions.entrySet()) {
                IAction action = new AddConditionAction(entry.getKey(), entry.getValue(), entityDef, title, message);
                IContributionItem item = new ActionContributionItem(action);
                item.fill(menu, index++);
            }
        }
    }
}
Also used : IAction(org.eclipse.jface.action.IAction) HashMap(java.util.HashMap) IContributionItem(org.eclipse.jface.action.IContributionItem) IStructuredSelection(org.eclipse.jface.viewers.IStructuredSelection) EntityDefinition(eu.esdihumboldt.hale.common.align.model.EntityDefinition) ActionContributionItem(org.eclipse.jface.action.ActionContributionItem) ISelection(org.eclipse.jface.viewers.ISelection) CompatibilityService(eu.esdihumboldt.hale.ui.common.service.compatibility.CompatibilityService) FilterDialogDefinition(eu.esdihumboldt.hale.ui.filter.extension.FilterDialogDefinition)

Aggregations

CompatibilityService (eu.esdihumboldt.hale.ui.common.service.compatibility.CompatibilityService)5 AlignmentService (eu.esdihumboldt.hale.ui.service.align.AlignmentService)4 ExclusiveExtensionListener (de.fhg.igd.eclipse.util.extension.exclusive.ExclusiveExtension.ExclusiveExtensionListener)2 CompatibilityMode (eu.esdihumboldt.hale.common.align.compatibility.CompatibilityMode)2 TaskService (eu.esdihumboldt.hale.common.tasks.TaskService)2 CompatibilityModeFactory (eu.esdihumboldt.hale.ui.common.service.compatibility.CompatibilityModeFactory)2 AlignmentServiceAdapter (eu.esdihumboldt.hale.ui.service.align.AlignmentServiceAdapter)2 IAction (org.eclipse.jface.action.IAction)2 ISelection (org.eclipse.jface.viewers.ISelection)2 IStructuredSelection (org.eclipse.jface.viewers.IStructuredSelection)2 BaseAlignmentCell (eu.esdihumboldt.hale.common.align.model.BaseAlignmentCell)1 Cell (eu.esdihumboldt.hale.common.align.model.Cell)1 EntityDefinition (eu.esdihumboldt.hale.common.align.model.EntityDefinition)1 DefaultCell (eu.esdihumboldt.hale.common.align.model.impl.DefaultCell)1 ResolvedTask (eu.esdihumboldt.hale.common.tasks.ResolvedTask)1 TaskServiceListener (eu.esdihumboldt.hale.common.tasks.TaskServiceListener)1 FunctionContentProvider (eu.esdihumboldt.hale.ui.common.function.viewer.FunctionContentProvider)1 FunctionLabelProvider (eu.esdihumboldt.hale.ui.common.function.viewer.FunctionLabelProvider)1 FilterDialogDefinition (eu.esdihumboldt.hale.ui.filter.extension.FilterDialogDefinition)1 SourceTargetTypeSelector (eu.esdihumboldt.hale.ui.function.common.SourceTargetTypeSelector)1