Example usage for org.eclipse.jface.databinding.viewers ObservableListContentProvider ObservableListContentProvider

List of usage examples for org.eclipse.jface.databinding.viewers ObservableListContentProvider ObservableListContentProvider

Introduction

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

Prototype

public ObservableListContentProvider() 

Source Link

Document

Constructs an ObservableListContentProvider.

Usage

From source file:com.hibouhome.rcp.spikes.databinding.parts.StockistsPart.java

License:Open Source License

private void createRegionsListViewer(final Composite parent) {
    regionsListViewer = new ListViewer(parent);
    regionsListViewer.getList().setLayoutData(new GridData(120, 300));
    regionsListViewer.setLabelProvider(new LabelProvider() {

        @Override//from   ww  w. j  a  v  a 2s  .  c o m
        public String getText(final Object element) {
            return ((Region) element).getName();
        }
    });
    regionsListViewer.setContentProvider(new ObservableListContentProvider());
}

From source file:com.hibouhome.rcp.spikes.databinding.parts.StockistsPart.java

License:Open Source License

private void createStockistsListViewer(final Composite parent) {
    stockistsListViewer = new ListViewer(parent);
    stockistsListViewer.getList().setLayoutData(new GridData(180, 300));
    stockistsListViewer.setLabelProvider(new LabelProvider() {

        @Override/*from  w  w w .j a  v  a  2  s. c om*/
        public String getText(final Object element) {
            return ((Stockist) element).getName();
        }
    });
    stockistsListViewer.setContentProvider(new ObservableListContentProvider());
}

From source file:com.htmlhifive.tools.jslint.view.TargetStructureComposite.java

License:Apache License

/**
 * ??./*from w w w. j a va2s.c o  m*/
 */
private void createContents() {
    setText(Messages.WT0003.getText());
    setLayout(new GridLayout(1, false));

    Composite composite = new Composite(this, SWT.NONE);
    composite.setLayout(new GridLayout(1, false));

    Link link = new Link(composite, SWT.NONE);
    link.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            doLinkWidgetSelected(e);
        }
    });
    link.setSize(84, 18);
    link.setText(Messages.DL0008.getText());

    Group group = new Group(this, SWT.NONE);
    GridData gdGroup = new GridData(SWT.FILL, SWT.FILL, true, false, 1, 1);
    gdGroup.heightHint = 150;
    group.setLayoutData(gdGroup);
    group.setText(Messages.WT0002.getText());
    group.setLayout(new GridLayout(1, false));

    treeViewerSource = new TreeViewer(group, SWT.BORDER);
    Tree treeSource = treeViewerSource.getTree();
    GridData gdTreeSource = new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1);
    gdTreeSource.widthHint = 300;
    treeSource.setLayoutData(gdTreeSource);

    IListProperty childrenProperty = new MultiListProperty(
            new IListProperty[] { PojoProperties.list("children") });
    ObservableListTreeContentProvider contentProvider = new ObservableListTreeContentProvider(
            childrenProperty.listFactory(), null);
    treeViewerSource.setContentProvider(contentProvider);

    ObservableMapLabelProvider labelProvider = new ObservableMapLabelProvider(
            PojoProperties.value("label").observeDetail(contentProvider.getKnownElements())) {
        @Override
        public Image getImage(Object element) {
            LibraryTreeModel model = (LibraryTreeModel) element;
            Object data = model.getData();
            if (data instanceof IncludePathEntryWrapper) {
                return JavaScriptUI.getSharedImages().getImage(ISharedImages.IMG_OBJS_PACKFRAG_ROOT);
            }
            if (data instanceof IPath) {
                return JavaScriptUI.getSharedImages().getImage(ISharedImages.IMG_OBJS_CUNIT);
            }
            if (StringUtils.equals(model.getLabel(), LABEL_INCLUDED)) {
                return JavaPluginImages.DESC_OBJS_INCLUSION_FILTER_ATTRIB.createImage();
            } else if (StringUtils.equals(model.getLabel(), LABEL_EXCLUDED)) {
                return JavaPluginImages.DESC_OBJS_EXCLUSION_FILTER_ATTRIB.createImage();
            }
            return null;
        }
    };
    treeViewerSource.setLabelProvider(labelProvider);
    treeViewerSource.setInput(createSourceViewInput());

    Label labelDescLib = new Label(this, SWT.NONE);
    labelDescLib.setToolTipText(Messages.DTT0000.getText());
    labelDescLib.setText(Messages.DL0017.getText());

    // ?.
    Group grpInternalLibrary = new Group(this, SWT.NONE);
    grpInternalLibrary.setLayout(new GridLayout(2, false));
    GridData gdGrpInternalLibrary = new GridData(SWT.FILL, SWT.FILL, true, false, 1, 1);
    gdGrpInternalLibrary.heightHint = 150;
    grpInternalLibrary.setLayoutData(gdGrpInternalLibrary);
    grpInternalLibrary.setText(Messages.WT0004.getText());
    tableViewerInternalLib = CheckboxTableViewer.newCheckList(grpInternalLibrary,
            SWT.BORDER | SWT.FULL_SELECTION);
    // tableViewerInternalLib = new TableViewer(grpLibrary, SWT.BORDER |
    // SWT.CHECK |
    // SWT.FULL_SELECTION);
    Table table = tableViewerInternalLib.getTable();
    GridData gridData = new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1);
    gridData.widthHint = 300;
    table.setLayoutData(gridData);

    Composite compInternalLibButton = new Composite(grpInternalLibrary, SWT.NONE);
    compInternalLibButton.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false, 1, 1));
    compInternalLibButton.setLayout(new GridLayout(1, false));

    Button btnInternalAllSelect = new Button(compInternalLibButton, SWT.NONE);
    btnInternalAllSelect.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            doBtnInternalAllSelectWidgetSelected(e);
        }
    });
    GridData gdBtnInternalAllSelect = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1);
    gdBtnInternalAllSelect.widthHint = 60;
    btnInternalAllSelect.setLayoutData(gdBtnInternalAllSelect);
    btnInternalAllSelect.setText(Messages.B0006.getText());

    Button btnInternalAllRelease = new Button(compInternalLibButton, SWT.NONE);
    btnInternalAllRelease.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            doBtnInternalAllReleaseWidgetSelected(e);
        }
    });
    GridData gdBtnInternalAllRelease = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1);
    gdBtnInternalAllRelease.widthHint = 60;
    btnInternalAllRelease.setLayoutData(gdBtnInternalAllRelease);
    btnInternalAllRelease.setText(Messages.B0007.getText());

    IObservableList observableList = createInternalLibViewInput();
    tableViewerInternalLib.setLabelProvider(new LabelProvider() {

        @Override
        public String getText(Object element) {
            WritableValue value = (WritableValue) element;
            return value.getValue().toString();
        }

        @Override
        public Image getImage(Object element) {
            return JavaScriptUI.getSharedImages().getImage(ISharedImages.IMG_OBJS_LIBRARY);
        }
    });
    ObservableListContentProvider listContentProvider = new ObservableListContentProvider();
    tableViewerInternalLib.setContentProvider(listContentProvider);
    tableViewerInternalLib.setInput(observableList);

    // ?.
    Group grpExternalLibrary = new Group(this, SWT.NONE);
    grpExternalLibrary.setText(Messages.WT0006.getText());
    grpExternalLibrary.setLayout(new GridLayout(2, false));
    GridData gdGrpExternalLibrary = new GridData(SWT.FILL, SWT.FILL, true, false, 1, 1);
    gdGrpExternalLibrary.heightHint = 150;
    grpExternalLibrary.setLayoutData(gdGrpExternalLibrary);

    tableViewerExternalLib = CheckboxTableViewer.newCheckList(grpExternalLibrary,
            SWT.BORDER | SWT.FULL_SELECTION);
    Table tableExternalLib = tableViewerExternalLib.getTable();
    GridData gdTableExternalLib = new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1);
    gdTableExternalLib.widthHint = 300;
    tableExternalLib.setLayoutData(gdTableExternalLib);

    Composite compExternalLibButton = new Composite(grpExternalLibrary, SWT.NONE);
    compExternalLibButton.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false, 1, 1));
    compExternalLibButton.setLayout(new GridLayout(1, false));

    Button btnExternalAllSelect = new Button(compExternalLibButton, SWT.NONE);
    btnExternalAllSelect.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            doBtnExternalAllSelectWidgetSelected(e);
        }
    });
    GridData gdBtnExternalAllSelect = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1);
    gdBtnExternalAllSelect.widthHint = 60;
    btnExternalAllSelect.setLayoutData(gdBtnExternalAllSelect);
    btnExternalAllSelect.setText(Messages.B0006.getText());

    Button btnExternalAllRelease = new Button(compExternalLibButton, SWT.NONE);
    btnExternalAllRelease.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            doBtnExternalAllReleaseWidgetSelected(e);
        }
    });
    GridData gdBtnExternalAllRelease = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1);
    gdBtnExternalAllRelease.widthHint = 60;
    btnExternalAllRelease.setLayoutData(gdBtnExternalAllRelease);
    btnExternalAllRelease.setText(Messages.B0007.getText());

    IObservableList externalObservableList = createExternalLibViewInput();
    tableViewerExternalLib.setLabelProvider(new LabelProvider() {

        @Override
        public String getText(Object element) {
            String value = (String) element;
            return value;
        }

        @Override
        public Image getImage(Object element) {
            return JavaScriptUI.getSharedImages().getImage(ISharedImages.IMG_OBJS_LIBRARY);
        }
    });
    ObservableListContentProvider listExternalContentProvider = new ObservableListContentProvider();
    tableViewerExternalLib.setContentProvider(listExternalContentProvider);
    tableViewerExternalLib.setInput(externalObservableList);

    initialDataBinding();
    initialModel();
}

From source file:com.maccasoft.composer.InstrumentToolBar.java

License:Open Source License

public InstrumentToolBar(Composite parent) {
    Composite composite = new Composite(parent, SWT.NONE);
    GridLayout gridLayout = new GridLayout(3, false);
    gridLayout.marginWidth = gridLayout.marginHeight = 0;
    composite.setLayout(gridLayout);/*from   w  w  w.j a  v  a  2 s  .c o  m*/

    shell = parent.getShell();

    GC gc = new GC(parent);
    FontMetrics fontMetrics = gc.getFontMetrics();
    gc.dispose();

    Label label = new Label(composite, SWT.NONE);
    label.setText("Instrument");

    viewer = new ComboViewer(composite, SWT.DROP_DOWN | SWT.READ_ONLY | SWT.NO_FOCUS);
    viewer.getCombo().setVisibleItemCount(20);
    viewer.getCombo()
            .setLayoutData(new GridData(Dialog.convertWidthInCharsToPixels(fontMetrics, 30), SWT.DEFAULT));
    viewer.setContentProvider(new ObservableListContentProvider());
    viewer.setLabelProvider(new LabelProvider() {

        @Override
        public String getText(Object element) {
            return String.format("%s - %s", project.getInstrumentId((Instrument) element), element.toString());
        }
    });

    viewer.addSelectionChangedListener(new ISelectionChangedListener() {

        @Override
        public void selectionChanged(SelectionChangedEvent event) {
            ISelection selection = event.getSelection();
            duplicate.setEnabled(!selection.isEmpty());
            edit.setEnabled(!selection.isEmpty());
            delete.setEnabled(!selection.isEmpty());
        }
    });

    ToolBar toolBar = new ToolBar(composite, SWT.FLAT | SWT.NO_FOCUS);
    ToolItem toolItem = new ToolItem(toolBar, SWT.PUSH);
    toolItem.setImage(ImageRegistry.getImageFromResources("application_add.png"));
    toolItem.setToolTipText("New instrument");
    toolItem.addSelectionListener(new SelectionAdapter() {

        @Override
        public void widgetSelected(SelectionEvent e) {
            Instrument instrument = new InstrumentBuilder("New instrument") //
                    .setModulation(0, 50) //
                    .setVolume(95) //
                    .setEnvelope(2, 2).repeat(1) //
                    .jump(-1).build();

            InstrumentEditor editor = new InstrumentEditor(shell, instrument);
            editor.setSerialPort(serialPort);
            if (editor.open() == InstrumentEditor.OK) {
                project.add(instrument);
                viewer.setSelection(new StructuredSelection(instrument));
            }
        }
    });

    duplicate = new ToolItem(toolBar, SWT.PUSH);
    duplicate.setImage(ImageRegistry.getImageFromResources("application_double.png"));
    duplicate.setToolTipText("Duplicate instrument");
    duplicate.setEnabled(false);
    duplicate.addSelectionListener(new SelectionAdapter() {

        @Override
        public void widgetSelected(SelectionEvent e) {
            IStructuredSelection selection = viewer.getStructuredSelection();
            if (selection.isEmpty()) {
                return;
            }
            Instrument selectedInstrument = (Instrument) selection.getFirstElement();

            Instrument instrument = new Instrument(selectedInstrument.getName() + " (1)");
            List<Command> list = new ArrayList<Command>();
            try {
                for (Command cmd : selectedInstrument.getCommands()) {
                    list.add(cmd.clone());
                }
                instrument.setCommands(list);
            } catch (Exception ex) {
                ex.printStackTrace();
            }

            InstrumentEditor editor = new InstrumentEditor(shell, instrument);
            editor.setSerialPort(serialPort);
            if (editor.open() == InstrumentEditor.OK) {
                project.add(instrument);
                viewer.setSelection(new StructuredSelection(instrument));
            }
        }
    });

    edit = new ToolItem(toolBar, SWT.PUSH);
    edit.setImage(ImageRegistry.getImageFromResources("application_edit.png"));
    edit.setToolTipText("Edit instrument");
    edit.setEnabled(false);
    edit.addSelectionListener(new SelectionAdapter() {

        @Override
        public void widgetSelected(SelectionEvent e) {
            IStructuredSelection selection = viewer.getStructuredSelection();
            if (selection.isEmpty()) {
                return;
            }
            Instrument selectedInstrument = (Instrument) selection.getFirstElement();

            InstrumentEditor editor = new InstrumentEditor(shell, selectedInstrument);
            editor.setSerialPort(serialPort);
            if (editor.open() == InstrumentEditor.OK) {
                viewer.refresh();
                viewer.setSelection(new StructuredSelection(selectedInstrument));
            }
        }
    });

    new ToolItem(toolBar, SWT.SEPARATOR);

    delete = new ToolItem(toolBar, SWT.PUSH);
    delete.setImage(ImageRegistry.getImageFromResources("application_delete.png"));
    delete.setToolTipText("Delete instrument");
    delete.setEnabled(false);
    delete.addSelectionListener(new SelectionAdapter() {

        @Override
        public void widgetSelected(SelectionEvent e) {
            IStructuredSelection selection = viewer.getStructuredSelection();
            if (selection.isEmpty()) {
                return;
            }

            Instrument selectedInstrument = (Instrument) selection.getFirstElement();
            if (isInstrumentUsed(selectedInstrument)) {
                if (!MessageDialog.openConfirm(shell, Main.APP_TITLE,
                        "The instrument is used in a song.  You really want to delete?")) {
                    return;
                }
            }
            project.remove(selectedInstrument);
        }
    });
}

From source file:com.maccasoft.composer.MusicEditor.java

License:Open Source License

void createHeader(Composite parent) {
    Composite composite = new Composite(parent, SWT.NONE);
    GridLayout gridLayout = new GridLayout(12, false);
    gridLayout.marginWidth = gridLayout.marginHeight = 0;
    composite.setLayout(gridLayout);//w  w  w.j  av a2s.  c om
    composite.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));

    Label label = new Label(composite, SWT.NONE);
    label.setText("Song");

    songsCombo = new ComboViewer(composite, SWT.DROP_DOWN | SWT.READ_ONLY | SWT.NO_FOCUS);
    songsCombo.getCombo().setVisibleItemCount(20);
    songsCombo.getCombo()
            .setLayoutData(new GridData(Dialog.convertWidthInCharsToPixels(fontMetrics, 30), SWT.DEFAULT));
    songsCombo.setContentProvider(new ObservableListContentProvider());
    songsCombo.setLabelProvider(new LabelProvider());

    ToolBar toolBar = new ToolBar(composite, SWT.FLAT | SWT.NO_FOCUS);

    edit = new ToolItem(toolBar, SWT.PUSH);
    edit.setImage(ImageRegistry.getImageFromResources("application_edit.png"));
    edit.setToolTipText("Rename");
    edit.addSelectionListener(new SelectionAdapter() {

        @Override
        public void widgetSelected(SelectionEvent e) {
            IInputValidator validator = new IInputValidator() {

                @Override
                public String isValid(String newText) {
                    if (newText.length() == 0) {
                        return "";
                    }
                    for (Song song : project.getSongs()) {
                        if (song != currentSong && newText.equalsIgnoreCase(song.getName())) {
                            return "A song with the same title already exists";
                        }
                    }
                    return null;
                }
            };
            InputDialog dlg = new InputDialog(shell, "Rename Song", "Title:", currentSong.getName(), validator);
            if (dlg.open() == InputDialog.OK) {
                currentSong.setName(dlg.getValue());
                songsCombo.refresh();
            }
        }
    });

    new ToolItem(toolBar, SWT.SEPARATOR);

    play = new ToolItem(toolBar, SWT.PUSH);
    play.setImage(ImageRegistry.getImageFromResources("control_play_blue.png"));
    play.setToolTipText("Play");
    play.addSelectionListener(new SelectionAdapter() {

        @Override
        public void widgetSelected(SelectionEvent e) {
            Runnable playThread = new Runnable() {

                @Override
                public void run() {
                    try {
                        ProjectCompiler compiler = new ProjectCompiler(project);
                        Music music = compiler.build(currentSong);
                        byte[] data = music.toArray();
                        try {
                            serialPort.writeInt('P');
                            serialPort.writeInt(data.length & 0xFF);
                            serialPort.writeInt((data.length >> 8) & 0xFF);
                            serialPort.writeBytes(data);
                        } catch (SerialPortException e) {
                            e.printStackTrace();
                        }
                    } catch (final ProjectException ex) {
                        Display.getDefault().asyncExec(new Runnable() {

                            @Override
                            public void run() {
                                if (shell.isDisposed()) {
                                    return;
                                }
                                MessageDialog.openError(shell, Main.APP_TITLE,
                                        "An error occurred while compiling song:\r\n\r\n" + ex.getMessage());
                                focusOnErrorCell(ex);
                            }
                        });
                    }
                }
            };
            new Thread(playThread).start();
        }
    });

    stop = new ToolItem(toolBar, SWT.PUSH);
    stop.setImage(ImageRegistry.getImageFromResources("control_stop_blue.png"));
    stop.setToolTipText("Stop");
    stop.addSelectionListener(new SelectionAdapter() {

        @Override
        public void widgetSelected(SelectionEvent e) {
            try {
                serialPort.writeInt('0');
            } catch (SerialPortException ex) {
                ex.printStackTrace();
            }
        }
    });

    new ToolItem(toolBar, SWT.SEPARATOR);

    delete = new ToolItem(toolBar, SWT.PUSH);
    delete.setImage(ImageRegistry.getImageFromResources("application_delete.png"));
    delete.setToolTipText("Delete song");
    delete.addSelectionListener(new SelectionAdapter() {

        @Override
        public void widgetSelected(SelectionEvent e) {
            IStructuredSelection selection = songsCombo.getStructuredSelection();
            if (selection.isEmpty()) {
                return;
            }
            if (!MessageDialog.openConfirm(shell, Main.APP_TITLE, "You really want to delete this song?")) {
                return;
            }
            int index = project.getSongs().indexOf(selection.getFirstElement());
            if (index > 0) {
                songsCombo.setSelection(new StructuredSelection(project.getSong(index - 1)));
            } else {
                songsCombo.setSelection(new StructuredSelection(project.getSong(index + 1)));
            }
            project.getObservableSongs().remove(selection.getFirstElement());
            delete.setEnabled(currentSong != null && project.getSongs().size() > 1);
        }
    });

    label = new Label(composite, SWT.NONE);
    label.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));

    label = new Label(composite, SWT.NONE);
    label.setText("BPM");

    bpm = new Spinner(composite, SWT.BORDER | SWT.NO_FOCUS);
    bpm.setValues(120, 0, 9999, 0, 1, 1);
    bpm.setLayoutData(new GridData(Dialog.convertWidthInCharsToPixels(fontMetrics, 5), SWT.DEFAULT));
    bpm.addSelectionListener(new SelectionAdapter() {

        @Override
        public void widgetSelected(SelectionEvent e) {
            if (currentSong != null) {
                currentSong.setBpm(bpm.getSelection());
            }
        }
    });

    label = new Label(composite, SWT.NONE);
    label.setText("Rows");

    rows = new Spinner(composite, SWT.BORDER | SWT.NO_FOCUS);
    rows.setValues(0, 0, 9999, 0, 1, 1);
    rows.setLayoutData(new GridData(Dialog.convertWidthInCharsToPixels(fontMetrics, 5), SWT.DEFAULT));
    rows.setEnabled(false);
    rows.addSelectionListener(new SelectionAdapter() {

        @Override
        public void widgetSelected(SelectionEvent e) {
            if (currentSong == null) {
                return;
            }
            int totalRows = rows.getSelection();
            while (currentSong.getObservableRows().size() > totalRows) {
                currentSong.getObservableRows().remove(currentSong.getObservableRows().size() - 1);
            }
            while (currentSong.getObservableRows().size() < totalRows) {
                currentSong.getObservableRows().add(new SongRow());
            }
        }
    });

    label = new Label(composite, SWT.NONE);
    label.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));

    label = new Label(composite, SWT.NONE);
    label.setText("Octave");

    octave = new Spinner(composite, SWT.BORDER | SWT.NO_FOCUS);
    octave.setValues(3, 1, 9, 0, 1, 1);
    octave.setLayoutData(new GridData(Dialog.convertWidthInCharsToPixels(fontMetrics, 3), SWT.DEFAULT));
    octave.addSelectionListener(new SelectionAdapter() {

        @Override
        public void widgetSelected(SelectionEvent e) {
            viewer.getControl().setFocus();
        }
    });

    instrumentToolBar = new InstrumentToolBar(composite);

    songsCombo.addSelectionChangedListener(new ISelectionChangedListener() {

        @Override
        public void selectionChanged(SelectionChangedEvent event) {
            IStructuredSelection selection = (IStructuredSelection) event.getSelection();
            currentSong = (Song) selection.getFirstElement();
            updateSongView();
        }
    });
}

From source file:com.maccasoft.composer.MusicEditor.java

License:Open Source License

void createMusicViewer(Composite parent) {
    Group group = new Group(parent, SWT.NONE);
    group.setText("Pattern");
    group.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
    group.setLayout(new GridLayout(1, false));

    final Font font;
    if ("win32".equals(SWT.getPlatform())) {
        font = new Font(Display.getDefault(), "Courier New", 10, SWT.NONE);
    } else {/*  w w w.  j  av  a 2  s.c o m*/
        font = new Font(Display.getDefault(), "mono", 10, SWT.NONE);
    }

    GC gc = new GC(group);
    gc.setFont(font);
    FontMetrics fontMetrics = gc.getFontMetrics();
    gc.dispose();

    Grid table = new Grid(group, SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL);
    table.setHeaderVisible(true);
    table.setLinesVisible(false);
    table.setRowHeaderVisible(true);
    table.setItemHeaderWidth(Dialog.convertWidthInCharsToPixels(fontMetrics, 6));
    table.setCellSelectionEnabled(true);
    table.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
    table.setFont(font);

    table.addDisposeListener(new DisposeListener() {

        @Override
        public void widgetDisposed(DisposeEvent e) {
            font.dispose();
        }
    });

    viewer = new GridTableViewer(table);

    ObservableListContentProvider contentProvider = new ObservableListContentProvider() {

        @Override
        public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
            if (oldInput != null) {
                ((IObservableList) oldInput).removeListChangeListener(listChangeListener);
            }
            if (newInput != null) {
                ((IObservableList) newInput).addListChangeListener(listChangeListener);
            }
            Display.getDefault().timerExec(0, rowBackgroundUpdateRunnable);
            super.inputChanged(viewer, oldInput, newInput);
        }
    };
    viewer.setContentProvider(contentProvider);

    viewer.setRowHeaderLabelProvider(new CellLabelProvider() {

        @Override
        public void update(ViewerCell cell) {
            int index = ((IObservableList) viewer.getInput()).indexOf(cell.getElement());
            cell.setText(String.format("%02X", index));
        }
    });

    for (int ch = 0; ch < Project.channelLabels.length; ch++) {
        final int channel = ch;

        GridColumnGroup columnGroup = new GridColumnGroup(table, SWT.NONE);
        columnGroup.setText(Project.channelLabels[ch]);

        GridColumn column = new GridColumn(columnGroup, SWT.CENTER);
        column.setText("Note");
        column.setWidth(Dialog.convertWidthInCharsToPixels(fontMetrics, 6));
        GridViewerColumn viewerColumn = new GridViewerColumn(viewer, column);
        viewerColumn.setLabelProvider(new CellLabelProvider() {

            @Override
            public void update(ViewerCell cell) {
                SongRow element = (SongRow) cell.getElement();
                cell.setText(element.getNote(channel));
            }
        });
        viewerColumn.setEditingSupport(new TextEditingSupport(viewer) {

            @Override
            protected Object getValue(Object element) {
                return ((SongRow) element).getNote(channel);
            }

            @Override
            protected void setValue(Object element, Object value) {
                ((SongRow) element).setNote(channel, value.toString());
                viewer.update(element, null);
            }
        });

        column = new GridColumn(columnGroup, SWT.CENTER);
        column.setText("Ins.");
        column.setWidth(Dialog.convertWidthInCharsToPixels(fontMetrics, 6));
        viewerColumn = new GridViewerColumn(viewer, column);
        viewerColumn.setLabelProvider(new CellLabelProvider() {

            @Override
            public void update(ViewerCell cell) {
                SongRow element = (SongRow) cell.getElement();
                String value = element.getInstrument(channel);
                cell.setText(value);
                if (project.getInstrument(value) == null) {
                    cell.setForeground(Display.getDefault().getSystemColor(SWT.COLOR_RED));
                } else {
                    cell.setForeground(null);
                }
            }
        });
        viewerColumn.setEditingSupport(new TextEditingSupport(viewer) {

            @Override
            protected Object getValue(Object element) {
                return ((SongRow) element).getInstrument(channel);
            }

            @Override
            protected void setValue(Object element, Object value) {
                ((SongRow) element).setInstrument(channel, value.toString());
                viewer.update(element, null);
            }
        });

        column = new GridColumn(columnGroup, SWT.CENTER);
        column.setText("Fx1");
        column.setWidth(Dialog.convertWidthInCharsToPixels(fontMetrics, 6));
        viewerColumn = new GridViewerColumn(viewer, column);
        viewerColumn.setLabelProvider(new CellLabelProvider() {

            @Override
            public void update(ViewerCell cell) {
                SongRow element = (SongRow) cell.getElement();
                String value = element.getFx1(channel);
                cell.setText(value);
                if (value.startsWith("TR") && project.getInstrument(element.getInstrument(channel)) == null) {
                    cell.setForeground(Display.getDefault().getSystemColor(SWT.COLOR_RED));
                } else {
                    cell.setForeground(null);
                }
            }
        });
        viewerColumn.setEditingSupport(new TextEditingSupport(viewer) {

            @Override
            protected Object getValue(Object element) {
                return ((SongRow) element).getFx1(channel);
            }

            @Override
            protected void setValue(Object element, Object value) {
                ((SongRow) element).setFx1(channel, value.toString());
                viewer.update(element, null);
            }
        });

        column = new GridColumn(columnGroup, SWT.CENTER);
        column.setText("Fx2");
        column.setWidth(Dialog.convertWidthInCharsToPixels(fontMetrics, 6));
        viewerColumn = new GridViewerColumn(viewer, column);
        viewerColumn.setLabelProvider(new CellLabelProvider() {

            @Override
            public void update(ViewerCell cell) {
                SongRow element = (SongRow) cell.getElement();
                String value = element.getFx2(channel);
                cell.setText(value);
                if (value.startsWith("TR") && project.getInstrument(element.getInstrument(channel)) == null) {
                    cell.setForeground(Display.getDefault().getSystemColor(SWT.COLOR_RED));
                } else {
                    cell.setForeground(null);
                }
            }
        });
        viewerColumn.setEditingSupport(new TextEditingSupport(viewer) {

            @Override
            protected Object getValue(Object element) {
                return ((SongRow) element).getFx2(channel);
            }

            @Override
            protected void setValue(Object element, Object value) {
                ((SongRow) element).setFx2(channel, value.toString());
                viewer.update(element, null);
            }
        });
    }

    table.addKeyListener(new NoteKeyListener(viewer) {

        @Override
        protected int getOctave() {
            return octave.getSelection();
        }

        @Override
        protected String getInstrument() {
            IStructuredSelection selection = instrumentToolBar.getStructuredSelection();
            String id = project.getInstrumentId((Instrument) selection.getFirstElement());
            return id != null ? id : super.getInstrument();
        }
    });

    ColumnViewerEditorActivationStrategy activationStrategy = new ColumnViewerEditorActivationStrategy(viewer) {

        @Override
        protected boolean isEditorActivationEvent(ColumnViewerEditorActivationEvent event) {
            return event.eventType == ColumnViewerEditorActivationEvent.TRAVERSAL
                    || event.eventType == ColumnViewerEditorActivationEvent.MOUSE_DOUBLE_CLICK_SELECTION
                    || (event.eventType == ColumnViewerEditorActivationEvent.KEY_PRESSED
                            && event.character == SWT.CR)
                    || event.eventType == ColumnViewerEditorActivationEvent.PROGRAMMATIC;
        }
    };
    activationStrategy.setEnableEditorActivationWithKeyboard(true);

    GridViewerEditor.create(viewer, activationStrategy, ColumnViewerEditor.TABBING_HORIZONTAL
            | ColumnViewerEditor.KEYBOARD_ACTIVATION | GridViewerEditor.SELECTION_FOLLOWS_EDITOR);
}

From source file:com.netxforge.netxstudio.callflow.screens.referenceNetwork.ComboBoxCellEditingSupport.java

License:Open Source License

public ComboBoxCellEditingSupport(ColumnViewer viewer, DataBindingContext dbc, Composite control,
        EditingDomain domain, FeaturePath path) {
    super(viewer, dbc);

    this.editingDomain = domain;
    this.path = path;

    cellEditor = new ComboBoxViewerCellEditor(control, SWT.READ_ONLY);

    // TODO, In a better version, use the editing service adapterfactory for
    // naming.//from   www  .  j  av  a2  s .com
    cellEditor.setLabelProvider(new LabelProvider() {

        /*
         * (non-Javadoc)
         * 
         * @see
         * org.eclipse.jface.viewers.LabelProvider#getText(java.lang.Object)
         */
        @Override
        public String getText(Object element) {
            if (element instanceof NodeType) {
                return ((NodeType) element).getName();
            } else if (element instanceof Protocol) {
                return ((Protocol) element).getName();
            } else if (element instanceof ReferenceRelationship) {

                ReferenceRelationship rel = (ReferenceRelationship) element;
                NodeType nt1 = rel.getRefInterface1Ref();
                NodeType nt2 = rel.getRefInterface2Ref();

                StringBuffer buf = new StringBuffer();
                buf.append(" (");
                buf.append(nt1 != null ? nt1.getName() : " ?");
                buf.append(" <--> ");
                buf.append(nt2 != null ? nt2.getName() : " ?");
                buf.append(")");

                String name = rel.getName();
                return name != null ? name : buf.toString();
            } else if (element instanceof ServiceFlowDirection) {
                switch (((ServiceFlowDirection) element).getValue()) {
                case ServiceFlowDirection.LEFTTORIGHT_VALUE: {
                    return "-->";
                }
                case ServiceFlowDirection.RIGHTTOLEFT_VALUE: {
                    return "<--";
                }
                }
            } else if (element instanceof Message) {
                Message m = (Message) element;
                String name = m.getName();
                return name;
            }
            return super.getText(element);
        }

    });
    ObservableListContentProvider listContentProvider = new ObservableListContentProvider();
    cellEditor.setContentProvider(listContentProvider);

}

From source file:com.netxforge.netxstudio.screens.ch9.Expressions.java

License:Open Source License

public EMFDataBindingContext initDataBindings_() {
    listContentProvider = new ObservableListContentProvider();
    tableViewer.setContentProvider(listContentProvider);

    IObservableMap[] observeMaps = EMFObservables.observeMaps(listContentProvider.getKnownElements(),

            new EStructuralFeature[] { Literals.EXPRESSION__NAME });

    final ExpressionsObservableMapLabelProvider expressionsObservableMapLabelProvider = new ExpressionsObservableMapLabelProvider(
            observeMaps);/*from w ww .  j  a  v  a 2  s . com*/
    tableViewer.setLabelProvider(expressionsObservableMapLabelProvider);

    IEMFListProperty l = EMFEditProperties.resource(editingService.getEditingDomain());
    IObservableList expressionsObservableList = l.observe(this.expressionsResource);

    tableViewer.setInput(expressionsObservableList);
    EMFDataBindingContext bindingContext = new EMFDataBindingContext();
    return bindingContext;
}

From source file:com.netxforge.netxstudio.screens.f1.details.NewEditServiceTree.java

License:Open Source License

public void bindToleranceSection() {
    ObservableListContentProvider listContentProvider = new ObservableListContentProvider();
    tolerancesTableViewer.setContentProvider(listContentProvider);
    IObservableMap[] observeMaps = EMFObservables.observeMaps(listContentProvider.getKnownElements(),
            new EStructuralFeature[] { LibraryPackage.Literals.TOLERANCE__NAME,
                    LibraryPackage.Literals.TOLERANCE__LEVEL,
                    LibraryPackage.Literals.TOLERANCE__EXPRESSION_REF });
    tolerancesTableViewer.setLabelProvider(new ToleranceObservableMapLabelProvider(observeMaps));
    IEMFListProperty l = EMFEditProperties.list(editingService.getEditingDomain(),
            ServicesPackage.Literals.RFS_SERVICE__TOLERANCE_REFS);

    tolerancesTableViewer.setInput(l.observe(service));
}

From source file:com.netxforge.netxstudio.screens.f1.details.NewEditServiceTree.java

License:Open Source License

public void bindNetworkElementSection() {

    ObservableListContentProvider listContentProvider = new ObservableListContentProvider();
    networkElementsTableViewer.setContentProvider(listContentProvider);
    IObservableSet set = listContentProvider.getKnownElements();

    List<IObservableMap> mapList = Lists.newArrayList();

    mapList.add(EMFEditProperties//from ww w  . j ava  2 s . com
            .value(editingService.getEditingDomain(), ServicesPackage.Literals.RFS_SERVICE__NODES)
            .observeDetail(set));
    mapList.add(EMFEditProperties
            .value(editingService.getEditingDomain(), OperatorsPackage.Literals.NODE__NODE_TYPE)
            .observeDetail(set));
    mapList.add(
            EMFEditProperties.value(editingService.getEditingDomain(), OperatorsPackage.Literals.NODE__NODE_ID)
                    .observeDetail(set));

    // IObservableMap[] observeMaps = EMFObservables.observeMaps(
    // listContentProvider.getKnownElements(),
    // new EStructuralFeature[] {,});

    IObservableMap[] map = new IObservableMap[mapList.size()];
    mapList.toArray(map);

    networkElementsTableViewer.setLabelProvider(new NodeInServiceObservableMapLabelProvider(map));

    IEMFListProperty l = EMFEditProperties.list(editingService.getEditingDomain(),
            ServicesPackage.Literals.RFS_SERVICE__NODES);

    networkElementsTableViewer.setInput(l.observe(service));
}