Search in sources :

Example 1 with LookupTableLoadWizard

use of eu.esdihumboldt.hale.ui.lookup.LookupTableLoadWizard in project hale by halestudio.

the class ClassificationMappingParameterPage method createManualTabControl.

private Control createManualTabControl(Composite tabParent) {
    // TODO load occurring value sources
    Composite tabContent = new Composite(tabParent, SWT.NONE);
    tabContent.setLayout(new GridLayout(1, true));
    ToolBar toolBar = new ToolBar(tabContent, SWT.NONE);
    toolBar.setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING, true, false));
    Composite tableContainer = new Composite(tabContent, SWT.NONE);
    tableContainer.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
    TableColumnLayout layout = new TableColumnLayout();
    tableContainer.setLayout(layout);
    tableViewer = new TableViewer(tableContainer, SWT.SINGLE | SWT.FULL_SELECTION | SWT.BORDER);
    tableViewer.getTable().setLinesVisible(true);
    tableViewer.getTable().setHeaderVisible(true);
    tableViewer.setContentProvider(ArrayContentProvider.getInstance());
    TableViewerColumn sourceColumn = new TableViewerColumn(tableViewer, SWT.NONE);
    sourceColumn.getColumn().setText("Source value");
    layout.setColumnData(sourceColumn.getColumn(), new ColumnWeightData(1));
    sourceColumn.setLabelProvider(new ColumnLabelProvider() {

        @Override
        public String getText(Object element) {
            @SuppressWarnings("unchecked") Entry<Value, Value> entry = (Entry<Value, Value>) element;
            return entry.getKey().getStringRepresentation();
        }
    });
    TableViewerColumn targetColumn = new TableViewerColumn(tableViewer, SWT.NONE);
    targetColumn.getColumn().setText("Target value");
    layout.setColumnData(targetColumn.getColumn(), new ColumnWeightData(1));
    targetColumn.setLabelProvider(new StyledCellLabelProvider() {

        @Override
        public void update(ViewerCell cell) {
            @SuppressWarnings("unchecked") Entry<Value, Value> entry = (Entry<Value, Value>) cell.getElement();
            if (entry.getValue() == null) {
                StyledString styledString = new StyledString("(unmapped)", StyledString.DECORATIONS_STYLER);
                cell.setText(styledString.getString());
                cell.setStyleRanges(styledString.getStyleRanges());
            } else {
                cell.setText(entry.getValue().getStringRepresentation());
                cell.setStyleRanges(null);
            }
            super.update(cell);
        }
    });
    tableViewer.setInput(lookupTable.entrySet());
    tableViewer.getTable().addMouseListener(new MouseAdapter() {

        @Override
        public void mouseDoubleClick(MouseEvent e) {
            ViewerCell cell = tableViewer.getCell(new Point(e.x, e.y));
            if (cell != null) {
                @SuppressWarnings("unchecked") Entry<Value, Value> entry = (Entry<Value, Value>) cell.getElement();
                Value oldValue;
                Value newValue;
                if (cell.getColumnIndex() == 0) {
                    oldValue = entry.getKey();
                    newValue = selectValue(sourceProperty, sourceEntity, "Edit source value", "Enter a new source value", oldValue.getStringRepresentation());
                } else {
                    oldValue = entry.getValue();
                    String initialValue = oldValue == null ? null : oldValue.getStringRepresentation();
                    newValue = selectValue(targetProperty, targetEntity, "Edit target value", "Enter a target value", initialValue);
                }
                if (newValue == null)
                    return;
                if (cell.getColumnIndex() == 0) {
                    if (!newValue.equals(oldValue) && lookupTable.containsKey(newValue)) {
                        showDuplicateSourceWarning(newValue.getStringRepresentation());
                    } else {
                        lookupTable.put(newValue, entry.getValue());
                        lookupTable.remove(oldValue);
                        tableViewer.refresh();
                    }
                } else {
                    entry.setValue(newValue);
                    tableViewer.update(entry, null);
                }
            }
        }
    });
    final ToolItem valueAdd = new ToolItem(toolBar, SWT.PUSH);
    final ToolItem fillValues = new ToolItem(toolBar, SWT.PUSH);
    new ToolItem(toolBar, SWT.SEPARATOR);
    final ToolItem loadButton = new ToolItem(toolBar, SWT.PUSH);
    saveButton = new ToolItem(toolBar, SWT.PUSH);
    new ToolItem(toolBar, SWT.SEPARATOR);
    final ToolItem valueRemove = new ToolItem(toolBar, SWT.PUSH);
    removeAllButton = new ToolItem(toolBar, SWT.PUSH);
    valueAdd.setImage(CommonSharedImages.getImageRegistry().get(CommonSharedImages.IMG_ADD));
    valueAdd.setToolTipText("Add source value");
    valueAdd.addSelectionListener(new SelectionAdapter() {

        @Override
        public void widgetSelected(SelectionEvent e) {
            Value newSource = selectValue(sourceProperty, sourceEntity, "Add source value", "Enter a new source value", null);
            if (newSource != null) {
                if (lookupTable.containsKey(newSource))
                    showDuplicateSourceWarning(newSource.getStringRepresentation());
                else {
                    lookupTable.put(newSource, null);
                    removeAllButton.setEnabled(true);
                    saveButton.setEnabled(true);
                    tableViewer.refresh();
                }
            }
        }
    });
    loadButton.setImage(CommonSharedImages.getImageRegistry().get(CommonSharedImages.IMG_OPEN));
    loadButton.setToolTipText("Load classification from file");
    loadButton.addSelectionListener(new SelectionAdapter() {

        @Override
        public void widgetSelected(SelectionEvent e) {
            LookupTableLoadWizard wizard = new LookupTableLoadWizard();
            LookupLoadAdvisor advisor = new LookupLoadAdvisor();
            wizard.setAdvisor(advisor, null);
            Shell shell = Display.getCurrent().getActiveShell();
            HaleWizardDialog dialog = new HaleWizardDialog(shell, wizard);
            dialog.open();
            if (advisor.getLookupTable() != null) {
                lookupTable.putAll(advisor.getLookupTable().getTable().asMap());
                tableViewer.refresh();
                removeAllButton.setEnabled(!lookupTable.isEmpty());
                saveButton.setEnabled(!lookupTable.isEmpty());
            }
        }
    });
    fillValues.setImage(fillValuesIcon);
    fillValues.setToolTipText("Attempt to fill source values with enumerations and occurring values.");
    fillValues.addSelectionListener(new SelectionAdapter() {

        @Override
        public void widgetSelected(SelectionEvent e) {
            // first try enumeration
            Enumeration<?> enumeration = sourceProperty.getPropertyType().getConstraint(Enumeration.class);
            if (enumeration.getValues() != null) {
                addSourceValuesIfNew(enumeration.getValues());
            }
            // then try occurring values
            if (!ovs.updateOccurringValues(sourceEntity)) {
                // values already there or not possible
                addOccurringSourceValues(ovs.getOccurringValues(sourceEntity));
            } else {
            // job is running, listener will be notified
            }
            removeAllButton.setEnabled(!lookupTable.isEmpty());
            saveButton.setEnabled(!lookupTable.isEmpty());
        }
    });
    saveButton.setImage(CommonSharedImages.getImageRegistry().get(CommonSharedImages.IMG_SAVE));
    saveButton.setToolTipText("Save classification to file");
    saveButton.setEnabled(false);
    saveButton.addSelectionListener(new SelectionAdapter() {

        @Override
        public void widgetSelected(SelectionEvent e) {
            LookupTableExportWizard wizard = new LookupTableExportWizard();
            LookupExportAdvisor advisor = new LookupExportAdvisor(new LookupTableInfoImpl(new LookupTableImpl(lookupTable), "current", "not set"));
            wizard.setAdvisor(advisor, null);
            Shell shell = Display.getCurrent().getActiveShell();
            HaleWizardDialog dialog = new HaleWizardDialog(shell, wizard);
            dialog.open();
        }
    });
    valueRemove.setImage(CommonSharedImages.getImageRegistry().get(CommonSharedImages.IMG_REMOVE));
    valueRemove.setToolTipText("Remove classification entry");
    valueRemove.setEnabled(false);
    tableViewer.addSelectionChangedListener(new ISelectionChangedListener() {

        @Override
        public void selectionChanged(SelectionChangedEvent event) {
            valueRemove.setEnabled(!event.getSelection().isEmpty());
            saveButton.setEnabled(!event.getSelection().isEmpty());
        }
    });
    valueRemove.addSelectionListener(new SelectionAdapter() {

        @Override
        public void widgetSelected(SelectionEvent e) {
            if (tableViewer.getSelection().isEmpty())
                return;
            Object element = ((IStructuredSelection) tableViewer.getSelection()).getFirstElement();
            @SuppressWarnings("unchecked") Entry<Value, Value> entry = (Entry<Value, Value>) element;
            lookupTable.remove(entry.getKey());
            tableViewer.refresh();
            removeAllButton.setEnabled(!lookupTable.isEmpty());
            saveButton.setEnabled(!lookupTable.isEmpty());
        }
    });
    removeAllButton.setImage(CommonSharedImages.getImageRegistry().get(CommonSharedImages.IMG_TRASH));
    removeAllButton.setEnabled(false);
    removeAllButton.setToolTipText("Remove complete classification");
    removeAllButton.addSelectionListener(new SelectionAdapter() {

        @Override
        public void widgetSelected(SelectionEvent e) {
            lookupTable.clear();
            tableViewer.refresh();
            removeAllButton.setEnabled(false);
            saveButton.setEnabled(false);
        }
    });
    Label desc = new Label(tabContent, SWT.NONE);
    desc.setText("Double click on a table cell to change its value.");
    return tabContent;
}
Also used : ColumnWeightData(org.eclipse.jface.viewers.ColumnWeightData) LookupLoadAdvisor(eu.esdihumboldt.hale.common.lookup.internal.LookupLoadAdvisor) Label(org.eclipse.swt.widgets.Label) SelectionChangedEvent(org.eclipse.jface.viewers.SelectionChangedEvent) StyledString(org.eclipse.jface.viewers.StyledString) ColumnLabelProvider(org.eclipse.jface.viewers.ColumnLabelProvider) GridLayout(org.eclipse.swt.layout.GridLayout) Entry(java.util.Map.Entry) Shell(org.eclipse.swt.widgets.Shell) TableColumnLayout(org.eclipse.jface.layout.TableColumnLayout) LookupTableLoadWizard(eu.esdihumboldt.hale.ui.lookup.LookupTableLoadWizard) SelectionEvent(org.eclipse.swt.events.SelectionEvent) TableViewerColumn(org.eclipse.jface.viewers.TableViewerColumn) ToolItem(org.eclipse.swt.widgets.ToolItem) LookupTableExportWizard(eu.esdihumboldt.hale.io.csv.ui.LookupTableExportWizard) StyledCellLabelProvider(org.eclipse.jface.viewers.StyledCellLabelProvider) MouseEvent(org.eclipse.swt.events.MouseEvent) Enumeration(eu.esdihumboldt.hale.common.schema.model.constraint.type.Enumeration) Composite(org.eclipse.swt.widgets.Composite) SelectionAdapter(org.eclipse.swt.events.SelectionAdapter) ISelectionChangedListener(org.eclipse.jface.viewers.ISelectionChangedListener) MouseAdapter(org.eclipse.swt.events.MouseAdapter) LookupTableInfoImpl(eu.esdihumboldt.hale.common.lookup.impl.LookupTableInfoImpl) StyledString(org.eclipse.jface.viewers.StyledString) Point(org.eclipse.swt.graphics.Point) ViewerCell(org.eclipse.jface.viewers.ViewerCell) ToolBar(org.eclipse.swt.widgets.ToolBar) GridData(org.eclipse.swt.layout.GridData) Value(eu.esdihumboldt.hale.common.core.io.Value) ParameterValue(eu.esdihumboldt.hale.common.align.model.ParameterValue) TableViewer(org.eclipse.jface.viewers.TableViewer) HaleWizardDialog(eu.esdihumboldt.hale.ui.util.wizard.HaleWizardDialog) LookupExportAdvisor(eu.esdihumboldt.hale.common.lookup.internal.LookupExportAdvisor) LookupTableImpl(eu.esdihumboldt.hale.common.lookup.impl.LookupTableImpl)

Aggregations

ParameterValue (eu.esdihumboldt.hale.common.align.model.ParameterValue)1 Value (eu.esdihumboldt.hale.common.core.io.Value)1 LookupTableImpl (eu.esdihumboldt.hale.common.lookup.impl.LookupTableImpl)1 LookupTableInfoImpl (eu.esdihumboldt.hale.common.lookup.impl.LookupTableInfoImpl)1 LookupExportAdvisor (eu.esdihumboldt.hale.common.lookup.internal.LookupExportAdvisor)1 LookupLoadAdvisor (eu.esdihumboldt.hale.common.lookup.internal.LookupLoadAdvisor)1 Enumeration (eu.esdihumboldt.hale.common.schema.model.constraint.type.Enumeration)1 LookupTableExportWizard (eu.esdihumboldt.hale.io.csv.ui.LookupTableExportWizard)1 LookupTableLoadWizard (eu.esdihumboldt.hale.ui.lookup.LookupTableLoadWizard)1 HaleWizardDialog (eu.esdihumboldt.hale.ui.util.wizard.HaleWizardDialog)1 Entry (java.util.Map.Entry)1 TableColumnLayout (org.eclipse.jface.layout.TableColumnLayout)1 ColumnLabelProvider (org.eclipse.jface.viewers.ColumnLabelProvider)1 ColumnWeightData (org.eclipse.jface.viewers.ColumnWeightData)1 ISelectionChangedListener (org.eclipse.jface.viewers.ISelectionChangedListener)1 SelectionChangedEvent (org.eclipse.jface.viewers.SelectionChangedEvent)1 StyledCellLabelProvider (org.eclipse.jface.viewers.StyledCellLabelProvider)1 StyledString (org.eclipse.jface.viewers.StyledString)1 TableViewer (org.eclipse.jface.viewers.TableViewer)1 TableViewerColumn (org.eclipse.jface.viewers.TableViewerColumn)1