Example usage for org.eclipse.jface.viewers TableViewerColumn TableViewerColumn

List of usage examples for org.eclipse.jface.viewers TableViewerColumn TableViewerColumn

Introduction

In this page you can find the example usage for org.eclipse.jface.viewers TableViewerColumn TableViewerColumn.

Prototype

public TableViewerColumn(TableViewer viewer, TableColumn column) 

Source Link

Document

Creates a new viewer column for the given TableViewer on the given TableColumn .

Usage

From source file:com.bdaum.zoom.ui.internal.dialogs.SetPersonDialog.java

License:Open Source License

@Override
protected Control createDialogArea(final Composite parent) {
    Composite area = (Composite) super.createDialogArea(parent);
    Composite composite = new Composite(area, SWT.NONE);
    composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
    composite.setLayout(new GridLayout());
    composite.setLayout(new GridLayout(2, false));
    viewer = new TableViewer(composite,
            SWT.BORDER | SWT.V_SCROLL | SWT.FULL_SELECTION | SWT.SINGLE | SWT.VIRTUAL);
    TableViewerColumn col1 = new TableViewerColumn(viewer, SWT.NONE);
    col1.getColumn().setWidth(200);/*from   ww w.  ja v a  2s  . c o m*/
    col1.getColumn().setText(Messages.AlbumSelectionDialog_name);
    col1.setLabelProvider(new ZColumnLabelProvider() {
        @Override
        public String getText(Object element) {
            if (element instanceof SmartCollectionImpl)
                return ((SmartCollectionImpl) element).getName();
            return element.toString();
        }

        public Image getImage(Object element) {
            if (element instanceof SmartCollectionImpl) {
                String id = ((SmartCollectionImpl) element).getStringId();
                Image face = faces.get(id);
                if (face == null)
                    faces.put(id, face = UiUtilities.getFace(getShell().getDisplay(),
                            (SmartCollectionImpl) element, 24, 4, parent.getBackground()));
                return face;
            }
            return null;
        }

        @Override
        protected Rectangle getIconBounds() {
            return Icons.person64.getImage().getBounds();
        }
    });
    TableViewerColumn col2 = new TableViewerColumn(viewer, SWT.NONE);
    col2.getColumn().setWidth(250);
    col2.getColumn().setText(Messages.AlbumSelectionDialog_description);
    col2.setLabelProvider(new ZColumnLabelProvider() {
        @Override
        public String getText(Object element) {
            if (element instanceof SmartCollectionImpl)
                return ((SmartCollectionImpl) element).getDescription();
            return element.toString();
        }
    });
    viewer.setContentProvider(new DeferredContentProvider(new Comparator<SmartCollection>() {
        @Override
        public int compare(SmartCollection e1, SmartCollection e2) {
            return e1.getName().compareTo(e2.getName());
        }
    }));
    GridData layoutData = new GridData(SWT.FILL, SWT.FILL, true, true);
    layoutData.heightHint = 500;
    viewer.getControl().setLayoutData(layoutData);
    viewer.addSelectionChangedListener(new ISelectionChangedListener() {
        @Override
        public void selectionChanged(SelectionChangedEvent event) {
            if (cntrlDwn) {
                SmartCollectionImpl sm = (SmartCollectionImpl) viewer.getStructuredSelection()
                        .getFirstElement();
                if (sm != null) {
                    CollectionEditDialog dialog = new CollectionEditDialog(getShell(), sm,
                            Messages.AlbumSelectionDialog_edit_person,
                            Messages.AlbumSelectionDialog_person_album_msg, false, true, false, false);
                    if (dialog.open() == Window.OK) {
                        final SmartCollectionImpl album = dialog.getResult();
                        if (album != null) {
                            Set<Object> toBeDeleted = new HashSet<Object>();
                            List<Object> toBeStored = new ArrayList<Object>();
                            Utilities.updateCollection(dbManager, sm, album, toBeDeleted, toBeStored);
                            dbManager.safeTransaction(toBeDeleted, toBeStored);
                        }
                        viewer.update(sm, null);
                    }
                }
                cntrlDwn = false;
            }
            validate();
        }
    });
    viewer.getControl().addKeyListener(new KeyAdapter() {
        @Override
        public void keyPressed(KeyEvent e) {
            if (e.keyCode == SWT.CTRL)
                cntrlDwn = true;
        }

        @Override
        public void keyReleased(KeyEvent e) {
            if (e.keyCode == SWT.CTRL)
                cntrlDwn = false;
        }
    });
    return area;
}

From source file:com.bdaum.zoom.ui.internal.preferences.ImportPreferencePage.java

License:Open Source License

@SuppressWarnings("unused")
private void createRecipeGroup(Composite composite) {
    recipeGroup = UiUtilities.createGroup(composite, 2,
            Messages.getString("ImportPreferencePage.recipe_detectors")); //$NON-NLS-1$
    recipeViewer = CheckboxTableViewer.newCheckList(recipeGroup,
            SWT.SINGLE | SWT.V_SCROLL | SWT.BORDER | SWT.FULL_SELECTION);
    recipeViewer.getControl().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
    TableViewerColumn col1 = new TableViewerColumn(recipeViewer, SWT.NONE);
    col1.getColumn().setWidth(250);// www.j  ava2 s  .  c o m
    col1.getColumn().setText(Messages.getString("ImportPreferencePage.raw_converter")); //$NON-NLS-1$
    col1.setLabelProvider(new ZColumnLabelProvider() {
        @Override
        public String getText(Object element) {
            if (element instanceof IRecipeDetector)
                return ((IRecipeDetector) element).getName();
            return element.toString();
        }
    });
    TableViewerColumn col2 = new TableViewerColumn(recipeViewer, SWT.NONE);
    col2.getColumn().setWidth(350);
    col2.getColumn().setText(Messages.getString("ImportPreferencePage.configuration")); //$NON-NLS-1$
    col2.setLabelProvider(new ZColumnLabelProvider() {
        @Override
        public String getText(Object element) {
            if (element instanceof IRecipeDetector) {
                List<IRecipeParameter> parameters = ((IRecipeDetector) element).getParameters();
                StringBuffer sb = new StringBuffer();
                for (IRecipeParameter parm : parameters) {
                    if (sb.length() > 0)
                        sb.append("; "); //$NON-NLS-1$
                    String value = parm.getLabel(parm.getValue());
                    if (value != null)
                        sb.append(parm.getName()).append(":").append(value); //$NON-NLS-1$
                }
                return sb.toString();
            }
            return element.toString();
        }
    });
    col2.setEditingSupport(new EditingSupport(recipeViewer) {
        @Override
        protected void setValue(Object element, Object value) {
            if (element instanceof IRecipeDetector && value instanceof Integer) {
                List<IRecipeParameter> parameters = ((IRecipeDetector) element).getParameters();
                if (!parameters.isEmpty()) {
                    IRecipeParameter parameter = parameters.get(0);
                    List<IRecipeParameterValue> values = parameters.get(0).getValues();
                    int i = ((Integer) value).intValue();
                    if (i >= 0 && i < values.size()) {
                        parameter.setValue(values.get(i).getId());
                        recipeViewer.update(element, null);
                    }
                }
            }
        }

        @Override
        protected Object getValue(Object element) {
            if (element instanceof IRecipeDetector) {
                List<IRecipeParameter> parameters = ((IRecipeDetector) element).getParameters();
                if (!parameters.isEmpty()) {
                    IRecipeParameter parameter = parameters.get(0);
                    List<IRecipeParameterValue> values = parameters.get(0).getValues();
                    String value = parameter.getValue();
                    int i = 0;
                    for (IRecipeParameterValue v : values) {
                        if (v.getId().equals(value))
                            return i;
                        ++i;
                    }
                }
            }
            return -1;
        }

        @Override
        protected CellEditor getCellEditor(Object element) {
            if (element instanceof IRecipeDetector) {
                List<IRecipeParameter> parameters = ((IRecipeDetector) element).getParameters();
                if (!parameters.isEmpty()) {
                    List<IRecipeParameterValue> values = parameters.get(0).getValues();
                    String[] labs = new String[values.size()];
                    int i = 0;
                    for (IRecipeParameterValue value : values)
                        labs[i++] = value.getLabel();
                    return new ComboBoxCellEditor(recipeViewer.getTable(), labs);
                }
            }
            return null;
        }

        @Override
        protected boolean canEdit(Object element) {
            if (element instanceof IRecipeDetector && recipeViewer.getChecked(element)) {
                List<IRecipeParameter> parameters = ((IRecipeDetector) element).getParameters();
                return !parameters.isEmpty();
            }
            return false;
        }
    });
    recipeViewer.getTable().setHeaderVisible(true);
    recipeViewer.getTable().setLinesVisible(true);
    recipeViewer.setContentProvider(ArrayContentProvider.getInstance());
    recipeViewer.setCheckStateProvider(new ICheckStateProvider() {
        public boolean isGrayed(Object element) {
            return false;
        }

        public boolean isChecked(Object element) {
            if (element instanceof IRecipeDetector)
                return selectedRecipeDetectors.contains(((IRecipeDetector) element).getId());
            return false;
        }
    });
    recipeViewer.setComparator(ZViewerComparator.INSTANCE);
    recipeViewer.addSelectionChangedListener(new ISelectionChangedListener() {
        public void selectionChanged(SelectionChangedEvent event) {
            updateRecipeButtons();
        }
    });
    recipeViewer.addCheckStateListener(new ICheckStateListener() {
        public void checkStateChanged(CheckStateChangedEvent event) {
            Object element = event.getElement();
            if (element instanceof IRecipeDetector) {
                String id = ((IRecipeDetector) element).getId();
                if (event.getChecked()) {
                    selectedRecipeDetectors.add(id);
                    processRecipesButton.setSelection(true);
                } else {
                    selectedRecipeDetectors.remove(id);
                    if (selectedRecipeDetectors.isEmpty())
                        processRecipesButton.setSelection(false);
                }
                recipeViewer.setInput(allDetectors);
                updateRecipeButtons();
                updateRecipeOptionButtons();
            }
        }
    });
    new AllNoneGroup(recipeGroup, new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            recipeViewer.setAllChecked(e.widget.getData() == AllNoneGroup.ALL);
            updateRecipeButtons();
        }
    });
    processRecipesButton = WidgetFactory.createCheckButton(recipeGroup,
            Messages.getString("ImportPreferencePage.process_recipes"), new GridData(SWT.BEGINNING, SWT.CENTER, //$NON-NLS-1$
                    false, false, 2, 1));
    processRecipesButton.addListener(new Listener() {
        @Override
        public void handleEvent(Event event) {
            updateThumbnailWarning();
        }
    });
    synchronizeRecipesButton = WidgetFactory.createCheckButton(recipeGroup,
            Messages.getString("ImportPreferencePage.immediate_update"), new GridData(SWT.BEGINNING, SWT.CENTER, //$NON-NLS-1$
                    false, false, 2, 1));
    synchronizeRecipesButton.setVisible(false);
}

From source file:com.bdaum.zoom.ui.internal.preferences.KeyPreferencePage.java

License:Open Source License

private static TableViewerColumn createColumn(final TableViewer viewer, String lab, int w) {
    final TableViewerColumn column = new TableViewerColumn(viewer, SWT.NONE);
    column.getColumn().setText(lab);/*from w ww  .ja v a  2s.  com*/
    column.getColumn().setWidth(w);
    return column;
}

From source file:com.bdaum.zoom.ui.internal.preferences.KeyPreferencePage.java

License:Open Source License

private void createConflictsArea(Composite parent) {
    Composite composite = new Composite(parent, SWT.NONE);
    composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
    composite.setLayout(new GridLayout(1, false));
    new Label(composite, SWT.NONE).setText(Messages.getString("KeyPreferencePage.conflicts")); //$NON-NLS-1$
    conflictViewer = new TableViewer(composite,
            SWT.SINGLE | SWT.V_SCROLL | SWT.H_SCROLL | SWT.BORDER | SWT.FULL_SELECTION);
    Table table = conflictViewer.getTable();
    TableViewerColumn bindingNameColumn = new TableViewerColumn(conflictViewer, SWT.LEAD);
    bindingNameColumn.getColumn().setWidth(250);
    table.setLayoutData(new GridData(250, 80));
    bindingNameColumn.setLabelProvider(new ZColumnLabelProvider() {
        @Override//from   w w  w  .  j a  v  a  2 s  .c om
        public String getText(Object element) {
            if (element instanceof Binding[]) {
                StringBuilder sb = new StringBuilder();
                for (Binding binding : ((Binding[]) element)) {
                    ParameterizedCommand parameterizedCommand = binding.getParameterizedCommand();
                    String s = Messages.getString("KeyPreferencePage.undefined"); //$NON-NLS-1$
                    if (parameterizedCommand != null)
                        try {
                            s = parameterizedCommand.getName();
                        } catch (NotDefinedException e) {
                            // do nothing
                        }
                    if (sb.length() > 0)
                        sb.append("; "); //$NON-NLS-1$
                    sb.append(s);
                }
                return sb.toString();
            }
            return element.toString();
        }
    });
    conflictViewer.setContentProvider(ArrayContentProvider.getInstance());
    conflictViewer.addDoubleClickListener(new IDoubleClickListener() {
        public void doubleClick(DoubleClickEvent event) {
            IStructuredSelection selection = (IStructuredSelection) event.getSelection();
            if (!selection.isEmpty()) {
                Binding[] conflict = (Binding[]) selection.getFirstElement();
                bindingViewer.setSelection(new StructuredSelection(conflict[0]));
            }
        }
    });
}

From source file:com.bdaum.zoom.ui.internal.preferences.PerspectivesPreferencePage.java

License:Open Source License

/**
 * Create a table of 3 buttons to enable the user to manage customized
 * perspectives./* w  ww.jav  a2 s  . c  om*/
 *
 * @param parent
 *            the parent for the button parent
 * @return Composite that the buttons are created in.
 */
protected Composite createCustomizePerspective(Composite parent) {
    Composite perspectivesComponent = new Composite(parent, SWT.NONE);
    perspectivesComponent.setLayoutData(new GridData(GridData.FILL_BOTH));
    perspectivesComponent.setLayout(new GridLayout(2, false));
    Label description = new Label(perspectivesComponent, SWT.WRAP);
    description.setLayoutData(new GridData(SWT.BEGINNING, SWT.CENTER, false, false, 2, 1));
    description.setText(Messages.getString("PerspectivesPreferencePage.perspectives_organize")); //$NON-NLS-1$
    new Label(perspectivesComponent, SWT.NONE)
            .setLayoutData(new GridData(SWT.BEGINNING, SWT.CENTER, false, false, 2, 1));

    CGroup perspGroup = UiUtilities.createGroup(perspectivesComponent, 2,
            Messages.getString("PerspectivesPreferencePage.available_perspectives")); //$NON-NLS-1$
    viewer = new TableViewer(perspGroup, SWT.V_SCROLL | SWT.FULL_SELECTION);
    viewer.addSelectionChangedListener(new ISelectionChangedListener() {
        @Override
        public void selectionChanged(SelectionChangedEvent event) {
            updateButtons();
        }
    });
    viewer.getTable().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
    viewer.setContentProvider(ArrayContentProvider.getInstance());
    viewer.setComparator(ZViewerComparator.INSTANCE);
    TableViewerColumn col1 = new TableViewerColumn(viewer, SWT.NONE);
    col1.getColumn().setWidth(180);
    col1.setLabelProvider(new ZColumnLabelProvider() {
        @Override
        public String getText(Object element) {
            if (element instanceof IPerspectiveDescriptor)
                return ((IPerspectiveDescriptor) element).getLabel();
            return element.toString();
        }
    });
    TableViewerColumn col2 = new TableViewerColumn(viewer, SWT.NONE);
    col2.getColumn().setWidth(120);
    col2.setLabelProvider(new ZColumnLabelProvider() {
        @Override
        public String getText(Object element) {
            if (element instanceof IPerspectiveDescriptor)
                return isPredefined((IPerspectiveDescriptor) element)
                        ? Messages.getString("PerspectivesPreferencePage.predefined") //$NON-NLS-1$
                        : Messages.getString("PerspectivesPreferencePage.user_defined"); //$NON-NLS-1$
            return element.toString();
        }
    });
    IPerspectiveDescriptor[] persps = perspectiveRegistry.getPerspectives();
    perspectives = new ArrayList<IPerspectiveDescriptor>(persps.length);
    for (int i = 0; i < persps.length; i++)
        perspectives.add(i, persps[i]);
    viewer.setInput(perspectives);
    createVerticalButtonBar(perspGroup);
    return perspectivesComponent;
}

From source file:com.bdaum.zoom.ui.internal.views.BookmarkView.java

License:Open Source License

private TableViewerColumn createColumn(final TableViewer tViewer, String lab, int w) {
    final TableViewerColumn column = new TableViewerColumn(tViewer, SWT.NONE);
    column.getColumn().setText(lab);/*  w w w. j a  va  2  s  .  c om*/
    column.getColumn().setWidth(w);
    column.getColumn().addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            switchSort(tViewer.getTable(), column.getColumn());
        }
    });
    return column;
}

From source file:com.bdaum.zoom.ui.internal.views.TableView.java

License:Open Source License

private void createGallery(Composite parent, boolean recreate) {
    gallery = new TableViewer(parent,
            SWT.VIRTUAL | SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION);
    PlatformUI.getWorkbench().getHelpSystem().setHelp(gallery.getControl(), HelpContextIds.TABLE_VIEW);
    themeChanged();//from  w w w  .  j  a v a 2 s .  c  om
    gallery.setContentProvider(new ILazyContentProvider() {
        public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
            // do nothing
        }

        public void dispose() {
            // do nothing
        }

        public void updateElement(int index) {
            IAssetProvider assetProvider = getAssetProvider();
            if (assetProvider != null) {
                Asset asset = assetProvider.getAsset(index);
                if (asset != null) {
                    synchronized (gallery) {
                        gallery.replace(asset, index);
                    }
                }
            }
        }
    });
    final Table table = gallery.getTable();
    if (!recreate)
        setAppStarting(table);
    table.setLinesVisible(true);
    table.setHeaderVisible(true);
    // Construct columns
    List<String> props = new ArrayList<String>();
    imageColumn = new TableViewerColumn(gallery, SWT.NONE);
    TableColumn icolumn = imageColumn.getColumn();
    icolumn.setWidth(thumbsize);
    icolumn.setResizable(false);
    icolumn.setText(Messages.getString("TableView.configure")); //$NON-NLS-1$
    imageColumn.setLabelProvider(new ThumbnailLabelProvider());
    icolumn.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            ConfigureColumnsDialog dialog = new ConfigureColumnsDialog(getSite().getShell());
            dialog.create();
            dialog.getShell().setLocation(gallery.getControl().toDisplay(e.x, e.y));
            dialog.open();
        }
    });
    props.add("$"); //$NON-NLS-1$
    QueryField scoreField = QueryField.SCORE;
    scoreColumn = createColumn(table, scoreField, Messages.getString("TableView.score"), 50, //$NON-NLS-1$
            new MetaDataLabelProvider(scoreField));
    props.add(scoreField.getKey());
    StringTokenizer st = new StringTokenizer(
            UiActivator.getDefault().getPreferenceStore().getString(PreferenceConstants.TABLECOLUMNS), "\n"); //$NON-NLS-1$
    displayedFields.clear();
    while (st.hasMoreTokens()) {
        String id = st.nextToken();
        QueryField qfield = QueryField.findQueryField(id);
        if (qfield != null) {
            displayedFields.add(qfield);
            createColumn(table, qfield, qfield.getLabel(), 120, new MetaDataLabelProvider(qfield));
            props.add(id);
        }
    }
    gallery.setColumnProperties(props.toArray(new String[props.size()]));
    gallery.addSelectionChangedListener(new ISelectionChangedListener() {
        public void selectionChanged(SelectionChangedEvent event) {
            if (refreshing <= 0) {
                stopAudio();
                selection = doGetAssetSelection();
                fireSelection();
            }
        }
    });
    ZColumnViewerToolTipSupport.enableFor(gallery);
    addKeyListener();
    addGestureListener(gallery.getTable());
    addExplanationListener(false);
    addDragDropSupport();
    hookContextMenu();
    hookDoubleClickAction();
}

From source file:com.bdaum.zoom.ui.internal.views.TableView.java

License:Open Source License

private TableViewerColumn createColumn(final Table table, QueryField qfield, String label, int defaultWidth,
        CellLabelProvider labelProvider) {
    final String key = qfield.getKey();
    TableViewerColumn tableViewerColumn = new TableViewerColumn(gallery, SWT.NONE);
    final TableColumn column = tableViewerColumn.getColumn();
    column.setText(label);/*from   w w  w.  jav  a  2 s . co  m*/
    column.setData(KEY, key);
    Integer w = columnWidths.get(key);
    column.setWidth(w != null ? w : defaultWidth);
    column.setResizable(true);
    column.addControlListener(new ControlAdapter() {
        @Override
        public void controlResized(ControlEvent e) {
            int width = column.getWidth();
            if (width > 0)
                columnWidths.put(key, width);
        }
    });
    column.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            if (refreshing > 0)
                return;
            switchSort(table, key, column);
        }
    });
    tableViewerColumn.setLabelProvider(labelProvider);
    if (key.equals(sortColumn)) {
        table.setSortColumn(column);
        table.setSortDirection(sortDirection);
    }
    if (qfield.canEdit() && qfield.getKey() != null && !(qfield.isStruct() && qfield.getCard() != 1)
            && qfield.getType() != QueryField.T_NONE)
        tableViewerColumn.setEditingSupport(new ViewEditingSupport(gallery, qfield));
    return tableViewerColumn;
}

From source file:com.blackducksoftware.integration.eclipseplugin.views.providers.DependencyTreeViewLabelProvider.java

License:Apache License

public TableViewerColumn addColumnTo(TableViewer viewer) {
    ColumnViewerToolTipSupport.enableFor(viewer);
    TableViewerColumn tableViewerColumn = new TableViewerColumn(viewer, alignment);
    TableColumn column = tableViewerColumn.getColumn();
    column.setMoveable(true);//w ww.j  av  a  2s. c  o m
    column.setResizable(true);
    column.setText(getTitle());
    column.setWidth(width);
    tableViewerColumn.setLabelProvider(this);
    return tableViewerColumn;
}

From source file:com.bmw.spdxeditor.editors.spdx.SPDXEditor.java

License:Apache License

/**
 * Create the license text editor component
 * /* www  . ja va2  s .  co m*/
 * @param parent
 * @return
 * @throws InvalidSPDXAnalysisException
 */
private Group createLicenseTextEditor(Composite parent) throws InvalidSPDXAnalysisException {
    Group licenseTextEditorGroup = new Group(parent, SWT.SHADOW_ETCHED_IN);
    licenseTextEditorGroup.setText("Licenses referenced in SPDX file");
    GridLayout licenseTextEditorGroupLayout = new GridLayout();
    licenseTextEditorGroupLayout.numColumns = 2;
    licenseTextEditorGroup.setLayout(licenseTextEditorGroupLayout);

    // Add table viewer
    final TableViewer tableViewer = new TableViewer(licenseTextEditorGroup,
            SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION | SWT.BORDER);

    // The list of available extracted license texts
    final Table table = tableViewer.getTable();
    table.setToolTipText("Right click to add/remove licenses.");

    // Build a drop down menu to add/remove licenses
    Menu licenseTableMenu = new Menu(parent.getShell(), SWT.POP_UP);
    MenuItem addNewLicenseText = new MenuItem(licenseTableMenu, SWT.PUSH);
    addNewLicenseText.setText("Add license text");

    addNewLicenseText.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            // Retrieve the corresponding Services
            IHandlerService handlerService = (IHandlerService) getSite().getService(IHandlerService.class);
            ICommandService commandService = (ICommandService) getSite().getService(ICommandService.class);

            // Retrieve the command
            Command generateCmd = commandService.getCommand("SPDXEditor.addNewLicenseText");

            // Create an ExecutionEvent
            ExecutionEvent executionEvent = handlerService.createExecutionEvent(generateCmd, new Event());

            // Launch the command
            try {
                generateCmd.executeWithChecks(executionEvent);
            } catch (ExecutionException | NotDefinedException | NotEnabledException | NotHandledException e1) {
                MessageDialog.openError(getSite().getShell(), "Execution failed", e1.getMessage());
            }
        }
    });

    // Listen for changes on model
    this.getInput().addChangeListener(new IResourceChangeListener() {
        @Override
        public void resourceChanged(IResourceChangeEvent event) {
            try {
                SPDXNonStandardLicense[] nonStandardLicenses = getInput().getAssociatedSPDXFile()
                        .getExtractedLicenseInfos();
                tableViewer.setInput(nonStandardLicenses);
                tableViewer.refresh();
                loadLicenseDataFromSPDXFile();

                setLicenseComboBoxValue(concludedLicenseChoice,
                        getInput().getAssociatedSPDXFile().getSpdxPackage().getConcludedLicenses());

                //               populateLicenseSelectorWithAvailableLicenses(declaredLicenseChoice);
                setLicenseComboBoxValue(declaredLicenseChoice,
                        getInput().getAssociatedSPDXFile().getSpdxPackage().getDeclaredLicense());
                setDirtyFlag(true);
            } catch (InvalidSPDXAnalysisException e) {
                e.printStackTrace();
            }
        }
    });

    final MenuItem deleteSelectedLicenseTexts = new MenuItem(licenseTableMenu, SWT.PUSH);
    deleteSelectedLicenseTexts.setText("Delete licenses");
    deleteSelectedLicenseTexts.setEnabled(false);

    tableViewer.addSelectionChangedListener(new ISelectionChangedListener() {
        @Override
        public void selectionChanged(SelectionChangedEvent event) {
            // Never enable, not yet implemented
            // deleteSelectedLicenseTexts.setEnabled(table.getSelectionCount()
            // != 0);
        }
    });

    table.setMenu(licenseTableMenu);

    // Make headers and borders visible
    table.setHeaderVisible(true);
    table.setLinesVisible(true);
    tableViewer.setContentProvider(ArrayContentProvider.getInstance());

    // Create TableViewerColumn for each column
    TableViewerColumn viewerNameColumn = new TableViewerColumn(tableViewer, SWT.NONE);
    viewerNameColumn.getColumn().setText("License ID");
    viewerNameColumn.getColumn().setWidth(100);

    // Set LabelProvider for each column
    viewerNameColumn.setLabelProvider(new CellLabelProvider() {
        @Override
        public void update(ViewerCell cell) {
            SPDXNonStandardLicense licenseInCell = (SPDXNonStandardLicense) cell.getElement();
            cell.setText(licenseInCell.getId());
        }
    });

    viewerNameColumn = new TableViewerColumn(tableViewer, SWT.NONE);
    viewerNameColumn.getColumn().setText("License text");
    viewerNameColumn.getColumn().setWidth(100);

    viewerNameColumn.setLabelProvider(new CellLabelProvider() {
        @Override
        public void update(ViewerCell cell) {
            SPDXNonStandardLicense iteratorLicense = (SPDXNonStandardLicense) cell.getElement();
            cell.setText(iteratorLicense.getText());
        }
    });

    /*
     * All ExtractedLicensingInfo is contained in the SPDX file assigned to
     * the input.
     */
    tableViewer.setInput(getInput().getAssociatedSPDXFile().getExtractedLicenseInfos());

    GridData spdxDetailsPanelGridData = new GridData(SWT.FILL, SWT.BEGINNING, true, false);
    spdxDetailsPanelGridData.horizontalSpan = 1;
    spdxDetailsPanelGridData.heightHint = 150;
    licenseTextEditorGroup.setLayoutData(spdxDetailsPanelGridData);

    GridData gridData = new GridData();
    gridData.verticalAlignment = GridData.FILL;
    gridData.grabExcessHorizontalSpace = true;
    gridData.grabExcessVerticalSpace = true;
    gridData.horizontalAlignment = GridData.FILL;
    gridData.horizontalSpan = 1;
    gridData.heightHint = 100;
    gridData.minimumWidth = 70;
    tableViewer.getControl().setLayoutData(gridData);

    /*
     * Text editor field for editing license texts.
     */
    final Text licenseEditorText = new Text(licenseTextEditorGroup,
            SWT.MULTI | SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL);
    licenseEditorText.setText("");
    licenseEditorText.setEditable(true);
    GridData gd = new GridData(SWT.FILL, SWT.BEGINNING, true, false);
    gd.minimumHeight = 70;
    gd.minimumWidth = 200;
    gd.heightHint = 100;
    gd.horizontalSpan = 1;
    licenseEditorText.setLayoutData(gd);
    licenseEditorText.addModifyListener(new ModifyListener() {
        @Override
        public void modifyText(ModifyEvent e) {
            try {
                SPDXNonStandardLicense[] nonStandardLicenses;
                nonStandardLicenses = getInput().getAssociatedSPDXFile().getExtractedLicenseInfos();
                nonStandardLicenses[table.getSelectionIndex()].setText(licenseEditorText.getText());
                setDirtyFlag(true);
            } catch (InvalidSPDXAnalysisException e1) {
                MessageDialog.openError(getSite().getShell(), "SPDX Analysis error", e1.getMessage());
            }
        }
    });

    /*
     * Listener for updating text editor selection based on selected table
     * entry.
     */
    table.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            SPDXNonStandardLicense[] nonStandardLicenses;
            try {
                nonStandardLicenses = getInput().getAssociatedSPDXFile().getExtractedLicenseInfos();
                licenseEditorText.setText(nonStandardLicenses[table.getSelectionIndex()].getText());
            } catch (InvalidSPDXAnalysisException e1) {
                MessageDialog.openError(getSite().getShell(), "SPDX Analysis invalid", e1.getMessage());
            }
        }
    });

    // Style group panel
    GridData licenseTextEditorGroupGridData = new GridData(SWT.FILL, SWT.BEGINNING, true, false);
    licenseTextEditorGroupGridData.horizontalSpan = 2;
    licenseTextEditorGroup.setLayoutData(licenseTextEditorGroupGridData);

    return licenseTextEditorGroup;
}