Example usage for org.eclipse.jface.resource LocalResourceManager LocalResourceManager

List of usage examples for org.eclipse.jface.resource LocalResourceManager LocalResourceManager

Introduction

In this page you can find the example usage for org.eclipse.jface.resource LocalResourceManager LocalResourceManager.

Prototype

public LocalResourceManager(ResourceManager parentRegistry, Control owner) 

Source Link

Document

Creates a local registry that wraps the given global registry.

Usage

From source file:com.google.gapid.views.ActivityPickerDialog.java

License:Apache License

@Override
protected Control createDialogArea(Composite parent) {
    Composite area = (Composite) super.createDialogArea(parent);

    Composite container = createComposite(area, new GridLayout(1, false));
    container.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));

    SearchBox search = new SearchBox(container, true);
    search.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false));

    loading = LoadablePanel.create(container, widgets, p -> createTreeForViewer(p, SWT.BORDER));
    loading.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
    tree = Widgets.createTreeViewer(loading.getContents());
    tree.setContentProvider(new PackageContentProvider());
    labelProvider = new PackageLabelProvider(widgets.theme);
    tree.setLabelProvider(new DelegatingStyledCellLabelProvider(labelProvider));
    tree.setComparator(new ViewerComparator()); // Sort by name.

    tree.getTree().addListener(SWT.Selection, e -> {
        selected = Action.getFor((TreeItem) e.item);
    });//from ww  w .  j a va  2 s.c om
    resources = new LocalResourceManager(JFaceResources.getResources(), tree.getTree());

    update();

    search.addListener(Events.Search, e -> {
        if (e.text.isEmpty()) {
            tree.resetFilters();
            return;
        }

        Pattern pattern = SearchBox.getPattern(e.text, (e.detail & Events.REGEX) != 0);
        tree.setFilters(new ViewerFilter() {
            @Override
            public boolean select(Viewer viewer, Object parentElement, Object element) {
                return !(element instanceof PkgInfo.Package)
                        || pattern.matcher(((PkgInfo.Package) element).getName()).find();
            }
        });
    });
    return area;
}

From source file:com.mousefeed.eclipse.preferences.presentation.PresentationModePreferencePage.java

License:Open Source License

private void createColumns(final TableViewer viewer) {
    final LocalResourceManager resManager = new LocalResourceManager(JFaceResources.getResources(),
            viewer.getTable());/*w ww  .ja  v a2  s .c om*/

    createTableViewerColumn(viewer, "Scheme", 150, new ColumnLabelProvider() {

        @Override
        public String getText(Object element) {
            String schemeId = ((SchemeConfig) element).getSchemeId();
            Scheme scheme = bindingService.getScheme(schemeId);
            if (scheme != null && scheme.isDefined()) {
                try {
                    return scheme.getName();
                } catch (NotDefinedException e) {
                    // can not happen
                    e.printStackTrace();
                }
            }
            return "Undefined (" + schemeId + ")";
        }
    }, null);
    createTableViewerColumn(viewer, "Label", 50, new ColumnLabelProvider() {
        @Override
        public String getText(Object element) {
            return ((SchemeConfig) element).getLabel();
        }
    }, new TextEditingSupport<SchemeConfig>(viewer, SchemeConfig.class) {

        @Override
        protected String getStringValue(SchemeConfig element) {
            return element.getLabel();
        }

        @Override
        protected void setStringValue(SchemeConfig element, String value) {
            element.setLabel(value);
            viewer.refresh();
        }

    });
    createTableViewerColumn(viewer, "Color", 150, new ColumnLabelProvider() {
        @Override
        public String getText(Object element) {
            return "";
        }

        @Override
        public Color getBackground(Object element) {
            return resManager.createColor(((SchemeConfig) element).getColorCode());
        }
    }, new ColorEditingSupport<SchemeConfig>(viewer, SchemeConfig.class) {

        @Override
        protected RGB getRGBValue(SchemeConfig element) {
            return element.getColorCode();
        }

        @Override
        protected void setRGBValue(SchemeConfig element, RGB value) {
            element.setColorCode(value);
            viewer.refresh();

        }
    });
}

From source file:com.rinke.solutions.pinball.PinDmdEditor.java

/**
 * Create contents of the window.//from  w  w  w . java 2  s.co m
 */
void createContents(Shell shell) {
    shell.setSize(1238, 657);
    shell.setText("Pin2dmd - Editor");
    shell.setLayout(new GridLayout(4, false));

    createMenu(shell);

    recentProjectsMenuManager = new RecentMenuManager("recentProject", 4, menuPopRecentProjects,
            e -> loadProject((String) e.widget.getData()));
    recentProjectsMenuManager.loadRecent();

    recentPalettesMenuManager = new RecentMenuManager("recentPalettes", 4, mntmRecentPalettes,
            e -> paletteHandler.loadPalette((String) e.widget.getData()));
    recentPalettesMenuManager.loadRecent();

    recentAnimationsMenuManager = new RecentMenuManager("recentAnimations", 4, mntmRecentAnimations,
            e -> aniAction.loadAni(((String) e.widget.getData()), true, false));
    recentAnimationsMenuManager.loadRecent();

    resManager = new LocalResourceManager(JFaceResources.getResources(), shell);

    Label lblAnimations = new Label(shell, SWT.NONE);
    lblAnimations.setText("Animations");

    Label lblKeyframes = new Label(shell, SWT.NONE);
    lblKeyframes.setText("KeyFrames");

    Label lblPreview = new Label(shell, SWT.NONE);
    lblPreview.setText("Preview");
    new Label(shell, SWT.NONE);

    aniListViewer = new TableViewer(shell, SWT.BORDER | SWT.V_SCROLL);
    Table aniList = aniListViewer.getTable();
    GridData gd_aniList = new GridData(SWT.LEFT, SWT.FILL, false, false, 1, 1);
    gd_aniList.widthHint = 189;
    aniList.setLayoutData(gd_aniList);
    aniList.setLinesVisible(true);
    aniList.addKeyListener(new EscUnselect(aniListViewer));
    aniListViewer.setContentProvider(ArrayContentProvider.getInstance());
    aniListViewer.setLabelProvider(new LabelProviderAdapter(o -> ((Animation) o).getDesc()));
    aniListViewer.setInput(animations.values());
    aniListViewer.addSelectionChangedListener(event -> {
        IStructuredSelection selection = (IStructuredSelection) event.getSelection();
        onAnimationSelectionChanged(selection.size() > 0 ? (Animation) selection.getFirstElement() : null);
    });
    TableViewerColumn viewerCol1 = new TableViewerColumn(aniListViewer, SWT.LEFT);
    viewerCol1.setEditingSupport(
            new GenericTextCellEditor(aniListViewer, e -> ((Animation) e).getDesc(), (e, v) -> {
                Animation ani = (Animation) e;
                updateAnimationMapKey(ani.getDesc(), v);
                ani.setDesc(v);
                frameSeqViewer.refresh();
            }));

    viewerCol1.getColumn().setWidth(220);
    viewerCol1.setLabelProvider(new ColumnLabelProviderAdapter(o -> ((Animation) o).getDesc()));

    keyframeTableViewer = new TableViewer(shell, SWT.SINGLE | SWT.V_SCROLL);
    Table keyframeList = keyframeTableViewer.getTable();
    GridData gd_keyframeList = new GridData(SWT.LEFT, SWT.FILL, false, false, 1, 1);
    gd_keyframeList.widthHint = 137;
    keyframeList.setLinesVisible(true);
    keyframeList.setLayoutData(gd_keyframeList);
    keyframeList.addKeyListener(new EscUnselect(keyframeTableViewer));

    //keyframeTableViewer.setLabelProvider(new KeyframeLabelProvider(shell));
    keyframeTableViewer.setContentProvider(ArrayContentProvider.getInstance());
    keyframeTableViewer.setInput(project.palMappings);
    keyframeTableViewer.addSelectionChangedListener(event -> keyFrameChanged(event));

    TableViewerColumn viewerColumn = new TableViewerColumn(keyframeTableViewer, SWT.LEFT);
    viewerColumn.setEditingSupport(
            new GenericTextCellEditor(keyframeTableViewer, e -> ((PalMapping) e).name, (e, v) -> {
                ((PalMapping) e).name = v;
            }));

    viewerColumn.getColumn().setWidth(200);
    viewerColumn.setLabelProvider(new KeyframeLabelProvider(shell));

    dmdWidget = new DMDWidget(shell, SWT.DOUBLE_BUFFERED, this.dmd, true);
    // dmdWidget.setBounds(0, 0, 700, 240);
    GridData gd_dmdWidget = new GridData(SWT.FILL, SWT.FILL, false, false, 2, 1);
    gd_dmdWidget.heightHint = 231;
    gd_dmdWidget.widthHint = 826;
    dmdWidget.setLayoutData(gd_dmdWidget);
    dmdWidget.setPalette(activePalette);
    dmdWidget.addListeners(l -> frameChanged(l));

    Composite composite_1 = new Composite(shell, SWT.NONE);
    composite_1.setLayout(new GridLayout(2, false));
    GridData gd_composite_1 = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1);
    gd_composite_1.heightHint = 35;
    gd_composite_1.widthHint = 206;
    composite_1.setLayoutData(gd_composite_1);

    btnRemoveAni = new Button(composite_1, SWT.NONE);
    btnRemoveAni.setLayoutData(new GridData(SWT.LEFT, SWT.TOP, false, false, 1, 1));
    btnRemoveAni.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
        }
    });
    btnRemoveAni.setText("Remove");
    btnRemoveAni.setEnabled(false);
    btnRemoveAni.addListener(SWT.Selection, e -> {
        if (selectedAnimation.isPresent()) {
            String key = selectedAnimation.get().getDesc();
            animations.remove(key);
            playingAnis.clear();
            animationHandler.setAnimations(playingAnis);
            animationHandler.setClockActive(true);
        }
    });

    btnSortAni = new Button(composite_1, SWT.NONE);
    btnSortAni.setLayoutData(new GridData(SWT.LEFT, SWT.TOP, false, false, 1, 1));
    btnSortAni.setText("Sort");
    btnSortAni.addListener(SWT.Selection, e -> sortAnimations());

    Composite composite_2 = new Composite(shell, SWT.NONE);
    composite_2.setLayout(new GridLayout(3, false));
    GridData gd_composite_2 = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1);
    gd_composite_2.heightHint = 35;
    gd_composite_2.widthHint = 157;
    composite_2.setLayoutData(gd_composite_2);

    btnDeleteKeyframe = new Button(composite_2, SWT.NONE);
    GridData gd_btnDeleteKeyframe = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1);
    gd_btnDeleteKeyframe.widthHint = 88;
    btnDeleteKeyframe.setLayoutData(gd_btnDeleteKeyframe);
    btnDeleteKeyframe.setText("Remove");
    btnDeleteKeyframe.setEnabled(false);
    btnDeleteKeyframe.addListener(SWT.Selection, e -> {
        if (selectedPalMapping != null) {
            project.palMappings.remove(selectedPalMapping);
            keyframeTableViewer.refresh();
            checkReleaseMask();
        }
    });

    Button btnSortKeyFrames = new Button(composite_2, SWT.NONE);
    btnSortKeyFrames.setText("Sort");
    btnSortKeyFrames.addListener(SWT.Selection, e -> sortKeyFrames());
    new Label(composite_2, SWT.NONE);

    scale = new Scale(shell, SWT.NONE);
    scale.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false, 2, 1));
    scale.addListener(SWT.Selection, e -> animationHandler.setPos(scale.getSelection()));

    Group grpKeyframe = new Group(shell, SWT.NONE);
    grpKeyframe.setLayout(new GridLayout(3, false));
    GridData gd_grpKeyframe = new GridData(SWT.FILL, SWT.TOP, false, false, 2, 4);
    gd_grpKeyframe.heightHint = 191;
    gd_grpKeyframe.widthHint = 350;
    grpKeyframe.setLayoutData(gd_grpKeyframe);
    grpKeyframe.setText("KeyFrames");

    Composite composite_hash = new Composite(grpKeyframe, SWT.NONE);
    //gd_composite_hash.widthHint = 105;
    GridData gd_composite_hash = new GridData(SWT.LEFT, SWT.CENTER, false, false, 2, 1);
    gd_composite_hash.widthHint = 148;
    composite_hash.setLayoutData(gd_composite_hash);
    createHashButtons(composite_hash, 10, 0);

    previewDmd = new DMDWidget(grpKeyframe, SWT.DOUBLE_BUFFERED, dmd, false);
    GridData gd_dmdPreWidget = new GridData(SWT.CENTER, SWT.TOP, false, false, 1, 1);
    gd_dmdPreWidget.heightHint = 40;
    gd_dmdPreWidget.widthHint = 132;
    previewDmd.setLayoutData(gd_dmdPreWidget);
    previewDmd.setDrawingEnabled(false);
    previewDmd.setPalette(previewPalettes.get(0));

    new Label(grpKeyframe, SWT.NONE);

    btnAddColormaskKeyFrame = new Button(grpKeyframe, SWT.NONE);
    btnAddColormaskKeyFrame
            .setToolTipText("Adds a key frame that trigger a color masking scene to be overlayed");
    btnAddColormaskKeyFrame.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false, 1, 1));
    btnAddColormaskKeyFrame.setText("Add ColorMask");
    btnAddColormaskKeyFrame.setEnabled(false);
    btnAddColormaskKeyFrame.addListener(SWT.Selection, e -> addFrameSeq(SwitchMode.ADD));

    btnAddKeyframe = new Button(grpKeyframe, SWT.NONE);
    btnAddKeyframe.setToolTipText("Adds a key frame that switches palette");
    btnAddKeyframe.setLayoutData(new GridData(SWT.FILL, SWT.BOTTOM, false, false, 1, 1));
    btnAddKeyframe.setText("Add PalSwitch");
    btnAddKeyframe.setEnabled(false);
    btnAddKeyframe.addListener(SWT.Selection, e -> addKeyFrame(SwitchMode.PALETTE));

    Label lblDuration = new Label(grpKeyframe, SWT.NONE);
    lblDuration.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1));
    lblDuration.setText("Duration:");

    txtDuration = new Text(grpKeyframe, SWT.BORDER);
    GridData gd_txtDuration = new GridData(SWT.FILL, SWT.CENTER, false, false, 1, 1);
    gd_txtDuration.widthHint = 93;
    txtDuration.setLayoutData(gd_txtDuration);
    txtDuration.setText("0");
    txtDuration.addListener(SWT.Verify, e -> e.doit = Pattern.matches("^[0-9]*$", e.text));
    txtDuration.addListener(SWT.Modify, e -> {
        if (selectedPalMapping != null) {
            selectedPalMapping.durationInMillis = Integer.parseInt(txtDuration.getText());
            selectedPalMapping.durationInFrames = (int) selectedPalMapping.durationInMillis / 40;
        }
    });

    btnFetchDuration = new Button(grpKeyframe, SWT.NONE);
    btnFetchDuration.setToolTipText(
            "Fetches duration for palette switches by calculating the difference between actual timestamp and keyframe timestamp");
    btnFetchDuration.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false, 1, 1));
    btnFetchDuration.setText("Fetch Duration");
    btnFetchDuration.setEnabled(false);
    btnFetchDuration.addListener(SWT.Selection, e -> {
        if (selectedPalMapping != null) {
            selectedPalMapping.durationInMillis = lastTimeCode - saveTimeCode;
            selectedPalMapping.durationInFrames = (int) selectedPalMapping.durationInMillis / FRAME_RATE;
            txtDuration.setText(selectedPalMapping.durationInMillis + "");
        }
    });

    Label lblNewLabel = new Label(grpKeyframe, SWT.NONE);
    lblNewLabel.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1));
    lblNewLabel.setText("FrameSeq:");

    frameSeqViewer = new ComboViewer(grpKeyframe, SWT.NONE);
    Combo frameSeqCombo = frameSeqViewer.getCombo();
    frameSeqCombo.setToolTipText("Choose frame sequence to use with key frame");
    GridData gd_frameSeqCombo = new GridData(SWT.FILL, SWT.CENTER, false, false, 1, 1);
    gd_frameSeqCombo.widthHint = 100;
    frameSeqCombo.setLayoutData(gd_frameSeqCombo);
    frameSeqViewer.setLabelProvider(new LabelProviderAdapter(o -> ((Animation) o).getDesc()));
    frameSeqViewer.setContentProvider(ArrayContentProvider.getInstance());
    frameSeqViewer.setInput(frameSeqList);
    frameSeqViewer.addSelectionChangedListener(event -> frameSeqChanged(event));

    btnAddFrameSeq = new Button(grpKeyframe, SWT.NONE);
    btnAddFrameSeq.setToolTipText("Adds a keyframe that triggers playback of a replacement scene");
    btnAddFrameSeq.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false, 1, 1));
    btnAddFrameSeq.setText("Add FrameSeq");
    btnAddFrameSeq.addListener(SWT.Selection, e -> addFrameSeq(SwitchMode.REPLACE));
    btnAddFrameSeq.setEnabled(false);

    Group grpDetails = new Group(shell, SWT.NONE);
    grpDetails.setLayout(new GridLayout(10, false));
    GridData gd_grpDetails = new GridData(SWT.FILL, SWT.FILL, false, false, 2, 1);
    gd_grpDetails.heightHint = 21;
    gd_grpDetails.widthHint = 776;
    grpDetails.setLayoutData(gd_grpDetails);
    grpDetails.setText("Details");

    Label lblFrame = new Label(grpDetails, SWT.NONE);
    lblFrame.setText("Frame:");

    lblFrameNo = new Label(grpDetails, SWT.NONE);
    GridData gd_lblFrameNo = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1);
    gd_lblFrameNo.widthHint = 66;
    gd_lblFrameNo.minimumWidth = 60;
    lblFrameNo.setLayoutData(gd_lblFrameNo);
    lblFrameNo.setText("---");

    Label lblTimecode = new Label(grpDetails, SWT.NONE);
    lblTimecode.setText("Timecode:");

    lblTcval = new Label(grpDetails, SWT.NONE);
    GridData gd_lblTcval = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1);
    gd_lblTcval.widthHint = 62;
    gd_lblTcval.minimumWidth = 80;
    lblTcval.setLayoutData(gd_lblTcval);
    lblTcval.setText("---");

    Label lblDelay = new Label(grpDetails, SWT.NONE);
    lblDelay.setText("Delay:");

    lblDelayVal = new Label(grpDetails, SWT.NONE);
    GridData gd_lblDelayVal = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1);
    gd_lblDelayVal.widthHint = 53;
    lblDelayVal.setLayoutData(gd_lblDelayVal);
    lblDelayVal.setText("---");

    Label lblPlanes = new Label(grpDetails, SWT.NONE);
    lblPlanes.setText("Planes:");

    lblPlanesVal = new Label(grpDetails, SWT.NONE);
    lblPlanesVal.setText("---");
    new Label(grpDetails, SWT.NONE);

    btnLivePreview = new Button(grpDetails, SWT.CHECK);
    btnLivePreview.setToolTipText("controls live preview to real display device");
    btnLivePreview.setText("Live Preview");
    btnLivePreview.addListener(SWT.Selection, e -> switchLivePreview(e));

    Composite composite = new Composite(shell, SWT.NONE);
    composite.setLayout(new GridLayout(9, false));
    composite.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false, 2, 1));

    btnStartStop = new Button(composite, SWT.NONE);
    btnStartStop.setText("Start");
    btnStartStop.addListener(SWT.Selection, e -> startStop(animationHandler.isStopped()));

    btnPrev = new Button(composite, SWT.NONE);
    btnPrev.setText("<");
    btnPrev.addListener(SWT.Selection, e -> prevFrame());

    btnNext = new Button(composite, SWT.NONE);
    btnNext.setText(">");
    btnNext.addListener(SWT.Selection, e -> nextFrame());

    btnMarkStart = new Button(composite, SWT.NONE);
    btnMarkStart.setToolTipText("Marks start of scene for cutting");
    btnMarkEnd = new Button(composite, SWT.NONE);
    btnCut = new Button(composite, SWT.NONE);
    btnCut.setToolTipText("Cuts out a new scene for editing and use a replacement or color mask");

    btnMarkStart.setText("Mark Start");
    btnMarkStart.addListener(SWT.Selection, e -> {
        cutInfo.setStart(selectedAnimation.get().actFrame);
    });

    btnMarkEnd.setText("Mark End");
    btnMarkEnd.addListener(SWT.Selection, e -> {
        cutInfo.setEnd(selectedAnimation.get().actFrame);
    });

    btnCut.setText("Cut");
    btnCut.addListener(SWT.Selection, e -> {
        // respect number of planes while cutting / copying
        Animation ani = cutScene(selectedAnimation.get(), cutInfo.getStart(), cutInfo.getEnd(),
                "Scene " + animations.size());
        log.info("cutting out scene from {} to {}", cutInfo);
        cutInfo.reset();

        // TODO mark such a scene somehow, to copy it to the
        // projects frames sequence for later export
        // alternatively introduce a dedicated flag for scenes that
        // should be exported
        // also define a way that a keyframe triggers a replacement
        // sequence instead of switching
        // the palette only
        // TODO NEED TO ADD a reference to the animation in the list
        // / map
        project.scenes.add(new Scene(ani.getDesc(), ani.start, ani.end, activePalette.index));
    });

    new Label(composite, SWT.NONE);

    Button btnIncPitch = new Button(composite, SWT.NONE);
    btnIncPitch.setText("+");
    btnIncPitch.addListener(SWT.Selection, e -> dmdWidget.incPitch());

    Button btnDecPitch = new Button(composite, SWT.NONE);
    btnDecPitch.setText("-");
    btnDecPitch.addListener(SWT.Selection, e -> dmdWidget.decPitch());

    Group grpPalettes = new Group(shell, SWT.NONE);
    grpPalettes.setLayout(new GridLayout(4, false));
    GridData gd_grpPalettes = new GridData(SWT.LEFT, SWT.TOP, false, false, 1, 1);
    gd_grpPalettes.widthHint = 479;
    gd_grpPalettes.heightHint = 71;
    grpPalettes.setLayoutData(gd_grpPalettes);
    grpPalettes.setText("Palettes");

    paletteComboViewer = new ComboViewer(grpPalettes, SWT.NONE);
    Combo combo = paletteComboViewer.getCombo();
    GridData gd_combo = new GridData(SWT.FILL, SWT.CENTER, false, false, 1, 1);
    gd_combo.widthHint = 166;
    combo.setLayoutData(gd_combo);
    paletteComboViewer.setContentProvider(ArrayContentProvider.getInstance());
    paletteComboViewer
            .setLabelProvider(new LabelProviderAdapter(o -> ((Palette) o).index + " - " + ((Palette) o).name));
    paletteComboViewer.setInput(project.palettes);
    paletteComboViewer.addSelectionChangedListener(event -> {
        IStructuredSelection selection = (IStructuredSelection) event.getSelection();
        if (selection.size() > 0) {
            paletteChanged((Palette) selection.getFirstElement());
        }
    });

    paletteTypeComboViewer = new ComboViewer(grpPalettes, SWT.READ_ONLY);
    Combo combo_1 = paletteTypeComboViewer.getCombo();
    combo_1.setToolTipText(
            "Type of palette. Default palette is choosen at start and after timed switch is expired");
    GridData gd_combo_1 = new GridData(SWT.FILL, SWT.CENTER, false, false, 1, 1);
    gd_combo_1.widthHint = 85;
    combo_1.setLayoutData(gd_combo_1);
    paletteTypeComboViewer.setContentProvider(ArrayContentProvider.getInstance());
    paletteTypeComboViewer.setInput(PaletteType.values());
    paletteTypeComboViewer.setSelection(new StructuredSelection(activePalette.type));
    paletteTypeComboViewer.addSelectionChangedListener(e -> paletteTypeChanged(e));

    btnNewPalette = new Button(grpPalettes, SWT.NONE);
    btnNewPalette.setToolTipText("Creates a new palette by copying the actual colors");
    btnNewPalette.setText("New");
    btnNewPalette.addListener(SWT.Selection, e -> paletteHandler.newPalette());

    btnRenamePalette = new Button(grpPalettes, SWT.NONE);
    btnRenamePalette.setToolTipText("Confirms the new palette name");
    btnRenamePalette.setText("Rename");
    btnRenamePalette.addListener(SWT.Selection, e -> {
        String newName = paletteComboViewer.getCombo().getText();
        if (newName.contains(" - ")) {
            activePalette.name = newName.split(" - ")[1];
            paletteComboViewer.setSelection(new StructuredSelection(activePalette));
            paletteComboViewer.refresh();
        } else {
            warn("Illegal palette name",
                    "Palette names must consist of palette index and name.\nName format therefore must be '<idx> - <name>'");
            paletteComboViewer.getCombo().setText(activePalette.index + " - " + activePalette.name);
        }

    });

    Composite grpPal = new Composite(grpPalettes, SWT.NONE);
    grpPal.setLayout(new GridLayout(1, false));
    GridData gd_grpPal = new GridData(SWT.LEFT, SWT.TOP, false, false, 2, 1);
    gd_grpPal.widthHint = 313;
    gd_grpPal.heightHint = 22;
    grpPal.setLayoutData(gd_grpPal);
    // GridData gd_grpPal = new GridData(SWT.LEFT, SWT.CENTER, false, false,
    // 1, 1);
    // gd_grpPal.widthHint = 223;
    // gd_grpPal.heightHint = 61;
    // grpPal.setLayoutData(gd_grpPal);
    //
    paletteTool = new PaletteTool(shell, grpPal, SWT.FLAT | SWT.RIGHT, activePalette);

    paletteTool.addListener(dmdWidget);

    Label lblCtrlclickToEdit = new Label(grpPalettes, SWT.NONE);
    GridData gd_lblCtrlclickToEdit = new GridData(SWT.LEFT, SWT.CENTER, false, false, 2, 1);
    gd_lblCtrlclickToEdit.widthHint = 139;
    lblCtrlclickToEdit.setLayoutData(gd_lblCtrlclickToEdit);
    lblCtrlclickToEdit.setText("Ctrl-Click to edit color");

    Composite composite_3 = new Composite(shell, SWT.NONE);
    GridLayout gl_composite_3 = new GridLayout(1, false);
    gl_composite_3.marginWidth = 0;
    gl_composite_3.marginHeight = 0;
    composite_3.setLayout(gl_composite_3);
    GridData gd_composite_3 = new GridData(SWT.LEFT, SWT.FILL, false, false, 1, 2);
    gd_composite_3.heightHint = 190;
    gd_composite_3.widthHint = 338;
    composite_3.setLayoutData(gd_composite_3);
    goDmdGroup = new GoDmdGroup(composite_3);

    Group grpDrawing = new Group(shell, SWT.NONE);
    grpDrawing.setLayout(new GridLayout(6, false));
    GridData gd_grpDrawing = new GridData(SWT.LEFT, SWT.TOP, false, false, 1, 1);
    gd_grpDrawing.heightHint = 63;
    gd_grpDrawing.widthHint = 479;
    grpDrawing.setLayoutData(gd_grpDrawing);
    grpDrawing.setText("Drawing");

    drawToolBar = new ToolBar(grpDrawing, SWT.FLAT | SWT.RIGHT);
    drawToolBar.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false, 1, 1));

    ToolItem tltmPen = new ToolItem(drawToolBar, SWT.RADIO);
    tltmPen.setImage(
            resManager.createImage(ImageDescriptor.createFromFile(PinDmdEditor.class, "/icons/pencil.png")));
    tltmPen.addListener(SWT.Selection, e -> dmdWidget.setDrawTool(drawTools.get("pencil")));

    ToolItem tltmFill = new ToolItem(drawToolBar, SWT.RADIO);
    tltmFill.setImage(resManager
            .createImage(ImageDescriptor.createFromFile(PinDmdEditor.class, "/icons/color-fill.png")));
    tltmFill.addListener(SWT.Selection, e -> dmdWidget.setDrawTool(drawTools.get("fill")));

    ToolItem tltmRect = new ToolItem(drawToolBar, SWT.RADIO);
    tltmRect.setImage(
            resManager.createImage(ImageDescriptor.createFromFile(PinDmdEditor.class, "/icons/rect.png")));
    tltmRect.addListener(SWT.Selection, e -> dmdWidget.setDrawTool(drawTools.get("rect")));

    ToolItem tltmLine = new ToolItem(drawToolBar, SWT.RADIO);
    tltmLine.setImage(
            resManager.createImage(ImageDescriptor.createFromFile(PinDmdEditor.class, "/icons/line.png")));
    tltmLine.addListener(SWT.Selection, e -> dmdWidget.setDrawTool(drawTools.get("line")));

    ToolItem tltmCircle = new ToolItem(drawToolBar, SWT.RADIO);
    tltmCircle.setImage(
            resManager.createImage(ImageDescriptor.createFromFile(PinDmdEditor.class, "/icons/oval.png")));
    tltmCircle.addListener(SWT.Selection, e -> dmdWidget.setDrawTool(drawTools.get("circle")));

    ToolItem tltmColorize = new ToolItem(drawToolBar, SWT.RADIO);
    tltmColorize.setImage(
            resManager.createImage(ImageDescriptor.createFromFile(PinDmdEditor.class, "/icons/colorize.png")));
    tltmColorize.addListener(SWT.Selection, e -> dmdWidget.setDrawTool(drawTools.get("colorize")));
    drawTools.put("pencil", new SetPixelTool(paletteTool.getSelectedColor()));
    drawTools.put("fill", new FloodFillTool(paletteTool.getSelectedColor()));
    drawTools.put("rect", new RectTool(paletteTool.getSelectedColor()));
    drawTools.put("line", new LineTool(paletteTool.getSelectedColor()));
    drawTools.put("circle", new CircleTool(paletteTool.getSelectedColor()));
    drawTools.put("colorize", new ColorizeTool(paletteTool.getSelectedColor()));
    drawTools.values().forEach(d -> paletteTool.addIndexListener(d));
    paletteTool.addListener(palette -> {
        if (livePreviewActive) {
            connector.upload(activePalette, handle);
        }
    });
    new Label(grpDrawing, SWT.NONE);

    btnColorMask = new Button(grpDrawing, SWT.CHECK);
    btnColorMask.setToolTipText("limits drawing to upper planes, so that this will just add coloring layers");
    btnColorMask.setText("ColMask");
    btnColorMask.addListener(SWT.Selection, e -> switchColorMask(btnColorMask.getSelection()));

    Label lblMaskNo = new Label(grpDrawing, SWT.NONE);
    lblMaskNo.setText("Mask No:");

    maskSpinner = new Spinner(grpDrawing, SWT.BORDER);
    maskSpinner.setToolTipText("select the mask to use");
    maskSpinner.setMinimum(0);
    maskSpinner.setMaximum(9);
    maskSpinner.addListener(SWT.Selection, e -> maskNumberChanged(e));

    btnMask = new Button(grpDrawing, SWT.CHECK);
    btnMask.setText("Show Mask");
    btnMask.addListener(SWT.Selection, e -> switchMask(btnMask.getSelection()));

    btnCopyToPrev = new Button(grpDrawing, SWT.NONE);
    btnCopyToPrev.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1));
    btnCopyToPrev.setText("CopyToPrev");
    btnCopyToPrev.addListener(SWT.Selection, e -> copyAndMoveToPrevFrame());

    new Label(grpDrawing, SWT.NONE);

    btnCopyToNext = new Button(grpDrawing, SWT.NONE);
    btnCopyToNext.setToolTipText("copy the actual scene / color mask to next frame and move forward");
    btnCopyToNext.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, false, 2, 1));
    btnCopyToNext.setText("CopyToNext");
    btnCopyToNext.addListener(SWT.Selection, e -> copyAndMoveToNextFrame());

    btnUndo = new Button(grpDrawing, SWT.NONE);
    btnUndo.setText("&Undo");
    btnUndo.addListener(SWT.Selection, e -> undo());

    btnRedo = new Button(grpDrawing, SWT.NONE);
    btnRedo.setText("&Redo");
    btnRedo.addListener(SWT.Selection, e -> redo());

    ObserverManager.bind(maskDmdObserver, e -> btnUndo.setEnabled(e), () -> maskDmdObserver.canUndo());
    ObserverManager.bind(maskDmdObserver, e -> btnRedo.setEnabled(e), () -> maskDmdObserver.canRedo());

}

From source file:net.sourceforge.czt.eclipse.ui.internal.editors.zeditor.ZEditor.java

License:Open Source License

/**
 * Creates the outline page used with this fEditor.
 *
 * @return the created Java outline page
 *//*ww  w.j av  a 2 s .  c o  m*/
protected ZContentOutlinePage createOutlinePage() {
    ZContentOutlinePage page = new ZContentOutlinePage(fOutlinerContextMenuId, this,
            new LocalResourceManager(JFaceResources.getResources(), getViewer().getTextWidget()));
    fOutlineSelectionChangedListener.install(page);
    setOutlinePageInput(page, model.getParsedData());
    return page;
}

From source file:net.yatomiya.e4.ui.util.UIResourceManager.java

License:Open Source License

public UIResourceManager(Control disposer) {
    resMgr = new LocalResourceManager(JFaceResources.getResources(), disposer);
}

From source file:no.itpr.parser.handlers.TimeZoneTreeView.java

License:Open Source License

public void createPartControl(Composite parent) {
    ResourceManager rm = JFaceResources.getResources();
    LocalResourceManager lrm = new LocalResourceManager(rm, parent);
    ImageRegistry ir = new ImageRegistry(lrm);
    FontRegistry fr = JFaceResources.getFontRegistry();
    URL sample = getClass().getResource("/icons/sample.gif");
    ir.put("sample", ImageDescriptor.createFromURL(sample));
    treeViewer = new TreeViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
    treeViewer.setLabelProvider(new DelegatingStyledCellLabelProvider(new TimeZoneLabelProvider(ir, fr)));
    treeViewer.setContentProvider(new TimeZoneContentProvider());
    treeViewer.setInput(new Object[] { TimeZoneComparator.getTimeZones() });
    treeViewer.setData("REVERSE", Boolean.TRUE);
    treeViewer.setFilters(new ViewerFilter[] { new TimeZoneViewerFilter("GMT") });
    treeViewer.setExpandPreCheckFilters(true);
    treeViewer.setComparator(new TimeZoneViewerComparator());
    treeViewer.addDoubleClickListener(new IDoubleClickListener() {
        public void doubleClick(DoubleClickEvent event) {
            Viewer viewer = event.getViewer();
            Shell shell = viewer.getControl().getShell();
            ISelection sel = viewer.getSelection();
            Object selectedValue;
            if (!(sel instanceof IStructuredSelection) || sel.isEmpty()) {
                selectedValue = null;/*  w  w w  .  j a va  2s. c  o  m*/
            } else {
                selectedValue = ((IStructuredSelection) sel).getFirstElement();
            }
            if (selectedValue instanceof TimeZone) {
                TimeZone timeZone = (TimeZone) selectedValue;
                new TimeZoneDialog(shell, timeZone).open();
            }
        }
    });
    getSite().setSelectionProvider(treeViewer);
    selectionListener = new TimeZoneSelectionListener(treeViewer, getSite().getPart());
    getSite().getWorkbenchWindow().getSelectionService().addSelectionListener(selectionListener);
}

From source file:org.csstudio.trends.databrowser2.propsheet.AxesTableHandler.java

License:Open Source License

/** Initialize
 *  @param parent/*from   w  w w  .j  a  v a 2  s. c o m*/
 *  @param table_layout
 *  @param operations_manager
 */
public AxesTableHandler(final Composite parent, final TableColumnLayout table_layout,
        final UndoableActionManager operations_manager) {
    color_registry = new LocalResourceManager(JFaceResources.getResources(), parent);
    this.operations_manager = operations_manager;

    axes_table = new TableViewer(parent,
            SWT.H_SCROLL | SWT.V_SCROLL | SWT.MULTI | SWT.FULL_SELECTION | SWT.VIRTUAL);
    final Table table = axes_table.getTable();
    table.setHeaderVisible(true);
    table.setLinesVisible(true);

    createColumns(table_layout);

    axes_table.setContentProvider(this);

    createContextMenu();
}

From source file:org.csstudio.trends.databrowser2.propsheet.TraceTableHandler.java

License:Open Source License

/** Create table columns: Auto-sizable, with label provider and editor
 *  @param table_layout//ww w.  java  2 s  .  co  m
 *  @param operations_manager
 *  @param table_viewer
 */
public void createColumns(final TableColumnLayout table_layout, final UndoableActionManager operations_manager,
        final TableViewer table_viewer) {
    color_registry = new LocalResourceManager(JFaceResources.getResources(), table_viewer.getTable());
    final Shell shell = table_viewer.getTable().getShell();

    // Visible Column ----------
    TableViewerColumn view_col = TableHelper.createColumn(table_layout, table_viewer, Messages.TraceVisibility,
            45, 1);
    view_col.setLabelProvider(new CellLabelProvider() {
        @Override
        public void update(final ViewerCell cell) {
            final ModelItem item = (ModelItem) cell.getElement();
            cell.setImage(item.isVisible() ? Activator.getDefault().getImage(Activator.ICON_CHECKED)
                    : Activator.getDefault().getImage(Activator.ICON_UNCHECKED));
        }

        @Override
        public String getToolTipText(Object element) {
            return Messages.TraceVisibilityTT;
        }
    });
    new TableColumnSortHelper<ModelItem>(table_viewer, view_col) {
        @Override
        public int compare(final ModelItem item1, final ModelItem item2) {
            final int v1 = item1.isVisible() ? 1 : 0;
            final int v2 = item2.isVisible() ? 1 : 0;
            final int cmp = v1 - v2;
            if (cmp != 0)
                return cmp;
            return item1.getName().compareTo(item2.getName());
        }
    };
    view_col.setEditingSupport(new EditSupportBase(table_viewer) {
        @Override
        protected CellEditor getCellEditor(final Object element) {
            editing = true;
            return new CheckboxCellEditor(((TableViewer) getViewer()).getTable());
        }

        @Override
        protected Object getValue(final Object element) {
            return ((ModelItem) element).isVisible();
        }

        @Override
        protected void setValue(final Object element, final Object value) {
            final ModelItem item = (ModelItem) element;
            final boolean visible = ((Boolean) value).booleanValue();
            if (!visible && !store.getBoolean(Preferences.ALLOW_HIDE_TRACE)) {
                MessageDialogWithToggle md = MessageDialogWithToggle.openOkCancelConfirm(shell,
                        Messages.HideTraceWarning, Messages.HideTraceWarningDetail, Messages.DoNotShowAgain,
                        false, null, null);
                if (md.getToggleState())
                    store.setValue(Preferences.ALLOW_HIDE_TRACE, true);
                if (md.getReturnCode() != MessageDialog.OK)
                    return;
            }
            new ChangeVisibilityCommand(operations_manager, item, visible);
            editing = false;
        }
    });

    // Trace PV/Formula Column ----------
    view_col = TableHelper.createColumn(table_layout, table_viewer, Messages.ItemName, 70, 70);
    view_col.setLabelProvider(new CellLabelProvider() {
        @Override
        public void update(final ViewerCell cell) {
            final ModelItem item = (ModelItem) cell.getElement();
            cell.setText(item.getName());
        }

        @Override
        public String getToolTipText(Object element) {
            return Messages.ItemNameTT;
        }
    });
    new TableColumnSortHelper<ModelItem>(table_viewer, view_col) {
        @Override
        public int compare(final ModelItem item1, final ModelItem item2) {
            return item1.getName().compareTo(item2.getName());
        }
    };
    view_col.setEditingSupport(new EditSupportBase(table_viewer) {
        @Override
        protected Object getValue(final Object element) {
            return ((ModelItem) element).getName();
        }

        @Override
        protected CellEditor getCellEditor(Object element) {
            editing = true;
            return super.getCellEditor(element);
        }

        @Override
        protected void setValue(final Object element, final Object value) {
            final String new_name = value.toString().trim();
            final ModelItem item = (ModelItem) element;
            if (new_name.equals(item.getName()))
                return;
            new ChangeNameCommand(shell, operations_manager, item, new_name);
            editing = false;
        }
    });

    // Display Name Column ----------
    view_col = TableHelper.createColumn(table_layout, table_viewer, Messages.TraceDisplayName, 70, 70);
    view_col.setLabelProvider(new CellLabelProvider() {
        @Override
        public void update(final ViewerCell cell) {
            final ModelItem item = (ModelItem) cell.getElement();
            cell.setText(item.getDisplayName());
        }

        @Override
        public String getToolTipText(Object element) {
            return Messages.TraceDisplayNameTT;
        }
    });
    new TableColumnSortHelper<ModelItem>(table_viewer, view_col) {
        @Override
        public int compare(final ModelItem item1, final ModelItem item2) {
            return item1.getDisplayName().compareTo(item2.getDisplayName());
        }
    };
    view_col.setEditingSupport(new EditSupportBase(table_viewer) {
        @Override
        protected Object getValue(final Object element) {
            return ((ModelItem) element).getDisplayName();
        }

        @Override
        protected CellEditor getCellEditor(Object element) {
            editing = true;
            return super.getCellEditor(element);
        }

        @Override
        protected void setValue(final Object element, final Object value) {
            final String new_name = value.toString().trim();
            final ModelItem item = (ModelItem) element;
            if (new_name.equals(item.getDisplayName()))
                return;
            new ChangeDisplayNameCommand(operations_manager, item, new_name);
            editing = false;
        }
    });

    // Color Column ----------
    view_col = TableHelper.createColumn(table_layout, table_viewer, Messages.Color, 40, 10);
    view_col.setLabelProvider(new ColorCellLabelProvider<ModelItem>() {
        @Override
        protected Color getColor(ModelItem item) {
            return color_registry.createColor(item.getColor());
        }
    });
    view_col.setEditingSupport(new EditSupportBase(table_viewer) {
        @Override
        protected CellEditor getCellEditor(final Object element) {
            editing = true;
            return new RGBCellEditor(table_viewer.getTable());
        }

        @Override
        protected Object getValue(final Object element) {
            return ((ModelItem) element).getColor();
        }

        @Override
        protected void setValue(final Object element, final Object value) {
            new ChangeColorCommand(operations_manager, (ModelItem) element, (RGB) value);
            editing = false;
        }
    });

    // Selected sample time stamp and value
    view_col = TableHelper.createColumn(table_layout, table_viewer, Messages.CursorTimestamp, 150, 30);
    view_col.setLabelProvider(new CellLabelProvider() {
        @Override
        public void update(final ViewerCell cell) {
            final ModelItem item = (ModelItem) cell.getElement();
            final Optional<PlotDataItem<Instant>> sample = item.getSelectedSample();
            if (sample.isPresent())
                cell.setText(TimeHelper.format(sample.get().getPosition()));
            else
                cell.setText(Messages.NotApplicable);
        }

        @Override
        public String getToolTipText(Object element) {
            return Messages.CursorTimestampTT;
        }
    });
    view_col = TableHelper.createColumn(table_layout, table_viewer, Messages.CursorValue, 40, 30);
    view_col.setLabelProvider(new CellLabelProvider() {
        @Override
        public void update(final ViewerCell cell) {
            final ModelItem item = (ModelItem) cell.getElement();
            final Optional<PlotDataItem<Instant>> sample = item.getSelectedSample();
            if (sample.isPresent()) {
                final PlotSample plot_sample = (PlotSample) sample.get();
                String text = DefaultVTypeFormat.get().format(plot_sample.getVType());
                final String units = item.getUnits();
                if (units != null)
                    text += " " + units; //$NON-NLS-1$
                cell.setText(text);
            } else
                cell.setText(Messages.NotApplicable);
        }

        @Override
        public String getToolTipText(Object element) {
            return Messages.CursorValueTT;
        }
    });

    // Scan Period Column (only applies to PVItems) ----------
    view_col = TableHelper.createColumn(table_layout, table_viewer, Messages.ScanPeriod, 70, 10);
    view_col.setLabelProvider(new CellLabelProvider() {
        @Override
        public void update(final ViewerCell cell) {
            final ModelItem item = (ModelItem) cell.getElement();
            if (item instanceof PVItem)
                cell.setText(Double.toString(((PVItem) item).getScanPeriod()));
            else
                cell.setText(Messages.NotApplicable);
        }

        @Override
        public String getToolTipText(final Object element) {
            if (!(element instanceof PVItem))
                return null;
            return Messages.ScanPeriodTT;
        }

    });
    view_col.setEditingSupport(new EditSupportBase(table_viewer) {
        @Override
        protected boolean canEdit(Object element) {
            return element instanceof PVItem;
        }

        @Override
        protected CellEditor getCellEditor(Object element) {
            editing = true;
            return super.getCellEditor(element);
        }

        @Override
        protected Object getValue(final Object element) {
            if (element instanceof PVItem)
                return Double.toString(((PVItem) element).getScanPeriod());
            else
                return Messages.NotApplicable;
        }

        @Override
        protected void setValue(final Object element, final Object value) {
            if (!(element instanceof PVItem))
                return;
            final PVItem pv = (PVItem) element;
            try {
                final double period = Double.parseDouble(value.toString().trim());
                if (period != pv.getScanPeriod())
                    new ChangeSamplePeriodCommand(shell, operations_manager, pv, period);
                editing = false;
            } catch (NumberFormatException ex) {
                // Display will revert to original value
                return;
            }
        }
    });

    // Buffer size Column (only applies to PVItems) ----------
    view_col = TableHelper.createColumn(table_layout, table_viewer, Messages.LiveSampleBufferSize, 70, 10);
    view_col.setLabelProvider(new CellLabelProvider() {
        @Override
        public void update(final ViewerCell cell) {
            final ModelItem item = (ModelItem) cell.getElement();
            if (item instanceof PVItem)
                cell.setText(Integer.toString(((PVItem) item).getLiveCapacity()));
            else
                cell.setText(Messages.NotApplicable);
        }

        @Override
        public String getToolTipText(final Object element) {
            if (!(element instanceof PVItem))
                return null;
            final PVItem pv = (PVItem) element;
            return NLS.bind(Messages.LiveBufferSizeInfoFmt, pv.getLiveCapacity(),
                    new RelativeTime(pv.getLiveCapacity()).toString());
        }
    });
    view_col.setEditingSupport(new EditSupportBase(table_viewer) {
        @Override
        protected boolean canEdit(Object element) {
            return element instanceof PVItem;
        }

        @Override
        protected Object getValue(final Object element) {
            if (element instanceof PVItem)
                return Integer.toString(((PVItem) element).getLiveCapacity());
            else
                return Messages.NotApplicable;
        }

        @Override
        protected CellEditor getCellEditor(Object element) {
            editing = true;
            return super.getCellEditor(element);
        }

        @Override
        protected void setValue(final Object element, final Object value) {
            if (!(element instanceof PVItem))
                return;
            final PVItem pv = (PVItem) element;
            try {
                final int size = Integer.parseInt(value.toString().trim());
                if (size != pv.getLiveCapacity())
                    new ChangeLiveCapacityCommand(shell, operations_manager, pv, size);
                editing = false;
            } catch (NumberFormatException ex) {
                // Display will revert to original value
                return;
            }
        }
    });

    // Axis Column ----------
    view_col = TableHelper.createColumn(table_layout, table_viewer, Messages.Axis, 60, 30);
    view_col.setLabelProvider(new CellLabelProvider() {
        @Override
        public void update(final ViewerCell cell) {
            final ModelItem item = (ModelItem) cell.getElement();
            cell.setText(item.getAxis().getName());
        }

        @Override
        public String getToolTipText(Object element) {
            return Messages.AxisTT;
        }
    });
    new TableColumnSortHelper<ModelItem>(table_viewer, view_col) {
        @Override
        public int compare(final ModelItem item1, final ModelItem item2) {
            final int cmp = item1.getAxis().getName().compareTo(item2.getAxis().getName());
            if (cmp != 0)
                return cmp;
            return item1.getDisplayName().compareTo(item2.getDisplayName());
        }
    };
    view_col.setEditingSupport(new EditSupportBase(table_viewer) { // Thread-safe copy of model axes as this editor is invoked
        final List<AxisConfig> axes = new ArrayList<>();

        @Override
        protected CellEditor getCellEditor(final Object element) {
            editing = true;
            final List<String> axis_names = new ArrayList<>();
            axes.clear();
            for (AxisConfig axis : model.getAxes()) {
                axes.add(axis);
                axis_names.add(axis.getName());
            }
            final ComboBoxCellEditor combo = new ComboBoxCellEditor(table_viewer.getTable(),
                    axis_names.toArray(new String[axis_names.size()]), SWT.READ_ONLY);
            combo.setValue(getValue(element));
            return combo;
        }

        @Override
        protected Object getValue(final Object element) {
            return model.getAxisIndex(((ModelItem) element).getAxis());
        }

        @Override
        protected void setValue(final Object element, final Object value) {
            final int axis_index = ((Integer) value).intValue();
            final AxisConfig axis = axes.get(axis_index);
            final ModelItem item = (ModelItem) element;
            if (axis != item.getAxis())
                new ChangeAxisCommand(operations_manager, item, axis);
            editing = false;
        }
    });

    // Trace Type Column ----------
    view_col = TableHelper.createColumn(table_layout, table_viewer, Messages.TraceType, 75, 10);
    view_col.setLabelProvider(new CellLabelProvider() {
        @Override
        public void update(final ViewerCell cell) {
            final ModelItem item = (ModelItem) cell.getElement();
            cell.setText(item.getTraceType().toString());
        }

        @Override
        public String getToolTipText(Object element) {
            return Messages.TraceTypeTT;
        }
    });
    view_col.setEditingSupport(new EditSupportBase(table_viewer) {
        @Override
        protected CellEditor getCellEditor(final Object element) {
            editing = true;
            final ComboBoxCellEditor combo = new ComboBoxCellEditor(table_viewer.getTable(),
                    TraceType.getDisplayNames(), SWT.READ_ONLY);
            combo.setValue(getValue(element));
            return combo;
        }

        @Override
        protected Object getValue(final Object element) {
            return ((ModelItem) element).getTraceType().ordinal();
        }

        @Override
        protected void setValue(final Object element, final Object value) {
            final TraceType trace_type = TraceType.fromOrdinal(((Integer) value).intValue());
            final ModelItem item = (ModelItem) element;
            if (trace_type != item.getTraceType())
                new ChangeTraceTypeCommand(operations_manager, item, trace_type);
            editing = false;
        }
    });

    // Line Width Column ----------
    view_col = TableHelper.createColumn(table_layout, table_viewer, Messages.TraceLineWidth, 40, 10);
    view_col.setLabelProvider(new CellLabelProvider() {
        @Override
        public void update(final ViewerCell cell) {
            final ModelItem item = (ModelItem) cell.getElement();
            cell.setText(Integer.toString(item.getLineWidth()));
        }

        @Override
        public String getToolTipText(Object element) {
            return Messages.TraceLineWidthTT;
        }

    });
    view_col.setEditingSupport(new EditSupportBase(table_viewer) {
        @Override
        protected Object getValue(final Object element) {
            return Integer.toString(((ModelItem) element).getLineWidth());
        }

        @Override
        protected CellEditor getCellEditor(Object element) {
            editing = true;
            return super.getCellEditor(element);
        }

        @Override
        protected void setValue(final Object element, final Object value) {
            int width;
            try {
                width = Integer.parseInt(value.toString().trim());
            } catch (NumberFormatException ex) {
                width = 0;
            }
            final ModelItem item = (ModelItem) element;
            if (width != item.getLineWidth())
                new ChangeLineWidthCommand(operations_manager, item, width);
            editing = false;
        }
    });

    // Point Type Column ----------
    view_col = TableHelper.createColumn(table_layout, table_viewer, Messages.PointType, 75, 10);
    view_col.setLabelProvider(new CellLabelProvider() {
        @Override
        public void update(final ViewerCell cell) {
            final ModelItem item = (ModelItem) cell.getElement();
            cell.setText(item.getPointType().toString());
        }

        @Override
        public String getToolTipText(Object element) {
            return Messages.PointTypeTT;
        }
    });
    view_col.setEditingSupport(new EditSupportBase(table_viewer) {
        @Override
        protected CellEditor getCellEditor(final Object element) {
            editing = true;
            final ComboBoxCellEditor combo = new ComboBoxCellEditor(table_viewer.getTable(),
                    PointType.getDisplayNames(), SWT.READ_ONLY);
            combo.setValue(getValue(element));
            return combo;
        }

        @Override
        protected Object getValue(final Object element) {
            return ((ModelItem) element).getPointType().ordinal();
        }

        @Override
        protected void setValue(final Object element, final Object value) {
            final PointType point_type = PointType.fromOrdinal(((Integer) value).intValue());
            final ModelItem item = (ModelItem) element;
            if (point_type != item.getPointType())
                new ChangePointTypeCommand(operations_manager, item, point_type);
            editing = false;
        }
    });

    // Point Size Column ----------
    view_col = TableHelper.createColumn(table_layout, table_viewer, Messages.PointSize, 40, 10);
    view_col.setLabelProvider(new CellLabelProvider() {
        @Override
        public void update(final ViewerCell cell) {
            final ModelItem item = (ModelItem) cell.getElement();
            cell.setText(Integer.toString(item.getPointSize()));
        }

        @Override
        public String getToolTipText(Object element) {
            return Messages.PointSizeTT;
        }

    });
    view_col.setEditingSupport(new EditSupportBase(table_viewer) {
        @Override
        protected Object getValue(final Object element) {
            return Integer.toString(((ModelItem) element).getPointSize());
        }

        @Override
        protected CellEditor getCellEditor(Object element) {
            editing = true;
            return super.getCellEditor(element);
        }

        @Override
        protected void setValue(final Object element, final Object value) {
            int size;
            try {
                size = Integer.parseInt(value.toString().trim());
            } catch (NumberFormatException ex) {
                size = 0;
            }
            final ModelItem item = (ModelItem) element;
            if (size != item.getPointSize())
                new ChangePointSizeCommand(operations_manager, item, size);
            editing = false;
        }
    });

    // Request Type Column ----------
    view_col = TableHelper.createColumn(table_layout, table_viewer, Messages.RequestType, 75, 10);
    view_col.setLabelProvider(new CellLabelProvider() {
        @Override
        public void update(final ViewerCell cell) {
            final ModelItem item = (ModelItem) cell.getElement();
            if (item instanceof PVItem)
                cell.setText(((PVItem) item).getRequestType().toString());
            else
                cell.setText(Messages.NotApplicable);
        }

        @Override
        public String getToolTipText(Object element) {
            return Messages.RequestTypeTT;
        }
    });
    // Edit as boolean: Raw == false,  Optimized == true
    view_col.setEditingSupport(new EditSupportBase(table_viewer) {
        @Override
        protected boolean canEdit(final Object element) {
            return element instanceof PVItem;
        }

        @Override
        protected CellEditor getCellEditor(final Object element) {
            editing = true;
            return new CheckboxCellEditor(((TableViewer) getViewer()).getTable());
        }

        @Override
        protected Object getValue(final Object element) {
            return ((PVItem) element).getRequestType() == RequestType.OPTIMIZED;
        }

        @Override
        protected void setValue(final Object element, final Object value) {
            final PVItem item = (PVItem) element;
            final RequestType request_type = ((Boolean) value).booleanValue() ? RequestType.OPTIMIZED
                    : RequestType.RAW;
            if (request_type == RequestType.RAW && !store.getBoolean(Preferences.ALLOW_REQUEST_RAW)) {
                MessageDialogWithToggle md = MessageDialogWithToggle.openOkCancelConfirm(shell,
                        Messages.RequestTypeWarning, Messages.RequestTypeWarningDetail, Messages.DoNotShowAgain,
                        false, null, null);
                if (md.getToggleState())
                    store.setValue(Preferences.ALLOW_REQUEST_RAW, true);
                if (md.getReturnCode() == MessageDialog.OK)
                    return;
            }
            new ChangeRequestTypeCommand(operations_manager, item, request_type);
            editing = false;
        }
    });

    // Waveform Index Column ----------
    view_col = TableHelper.createColumn(table_layout, table_viewer, Messages.WaveformIndexCol, 40, 10);
    view_col.setLabelProvider(new CellLabelProvider() {
        @Override
        public void update(final ViewerCell cell) {
            final ModelItem item = (ModelItem) cell.getElement();
            cell.setText(Integer.toString(item.getWaveformIndex()));
        }

        @Override
        public String getToolTipText(Object element) {
            return Messages.WaveformIndexColTT;
        }

    });
    view_col.setEditingSupport(new EditSupportBase(table_viewer) {
        @Override
        protected Object getValue(final Object element) {
            return Integer.toString(((ModelItem) element).getWaveformIndex());
        }

        @Override
        protected CellEditor getCellEditor(Object element) {
            editing = true;
            return super.getCellEditor(element);
        }

        @Override
        protected void setValue(final Object element, final Object value) {
            int index;
            try {
                index = Integer.parseInt(value.toString().trim());
                if (index < 0)
                    return;
                final ModelItem item = (ModelItem) element;
                if (index != item.getWaveformIndex())
                    new ChangeWaveformIndexCommand(operations_manager, item, index);
            } catch (NumberFormatException ex) {
                return;
            } finally {
                editing = false;
            }

        }
    });

    ColumnViewerToolTipSupport.enableFor(table_viewer);
}

From source file:org.csstudio.trends.databrowser3.propsheet.TraceTableHandler.java

License:Open Source License

/** Create table columns: Auto-sizable, with label provider and editor
 *  @param table_layout/*from www.  j av a2s .c om*/
 *  @param operations_manager
 *  @param table_viewer
 */
public void createColumns(final TableColumnLayout table_layout, final UndoableActionManager operations_manager,
        final TableViewer table_viewer) {
    color_registry = new LocalResourceManager(JFaceResources.getResources(), table_viewer.getTable());
    final Shell shell = table_viewer.getTable().getShell();

    // Visible Column ----------
    TableViewerColumn view_col = TableHelper.createColumn(table_layout, table_viewer, Messages.TraceVisibility,
            45, 1);
    view_col.setLabelProvider(new CellLabelProvider() {
        @Override
        public void update(final ViewerCell cell) {
            final ModelItem item = (ModelItem) cell.getElement();
            cell.setImage(item.isVisible() ? Activator.getDefault().getImage(Activator.ICON_CHECKED)
                    : Activator.getDefault().getImage(Activator.ICON_UNCHECKED));
        }

        @Override
        public String getToolTipText(Object element) {
            return Messages.TraceVisibilityTT;
        }
    });
    new TableColumnSortHelper<ModelItem>(table_viewer, view_col) {
        @Override
        public int compare(final ModelItem item1, final ModelItem item2) {
            final int v1 = item1.isVisible() ? 1 : 0;
            final int v2 = item2.isVisible() ? 1 : 0;
            final int cmp = v1 - v2;
            if (cmp != 0)
                return cmp;
            return item1.getName().compareTo(item2.getName());
        }
    };
    view_col.setEditingSupport(new EditSupportBase(table_viewer) {
        @Override
        protected CellEditor getCellEditor(final Object element) {
            editing = true;
            return new CheckboxCellEditor(((TableViewer) getViewer()).getTable());
        }

        @Override
        protected Object getValue(final Object element) {
            return ((ModelItem) element).isVisible();
        }

        @Override
        protected void setValue(final Object element, final Object value) {
            final ModelItem item = (ModelItem) element;
            final boolean visible = ((Boolean) value).booleanValue();
            if (!visible && prompt_for_not_visible) {
                if (!MessageDialog.openQuestion(shell, Messages.HideTraceWarning,
                        Messages.HideTraceWarningDetail))
                    return;
                prompt_for_not_visible = false;
            }
            new ChangeVisibilityCommand(operations_manager, item, visible);
            editing = false;
        }
    });

    // Trace PV/Formula Column ----------
    view_col = TableHelper.createColumn(table_layout, table_viewer, Messages.ItemName, 70, 70);
    view_col.setLabelProvider(new CellLabelProvider() {
        @Override
        public void update(final ViewerCell cell) {
            final ModelItem item = (ModelItem) cell.getElement();
            cell.setText(item.getName());
        }

        @Override
        public String getToolTipText(Object element) {
            return Messages.ItemNameTT;
        }
    });
    new TableColumnSortHelper<ModelItem>(table_viewer, view_col) {
        @Override
        public int compare(final ModelItem item1, final ModelItem item2) {
            return item1.getName().compareTo(item2.getName());
        }
    };
    view_col.setEditingSupport(new EditSupportBase(table_viewer) {
        @Override
        protected Object getValue(final Object element) {
            return ((ModelItem) element).getName();
        }

        @Override
        protected CellEditor getCellEditor(Object element) {
            editing = true;
            return super.getCellEditor(element);
        }

        @Override
        protected void setValue(final Object element, final Object value) {
            final String new_name = value.toString().trim();
            final ModelItem item = (ModelItem) element;
            if (new_name.equals(item.getName()))
                return;
            new ChangeNameCommand(shell, operations_manager, item, new_name);
            editing = false;
        }
    });

    // Display Name Column ----------
    view_col = TableHelper.createColumn(table_layout, table_viewer, Messages.TraceDisplayName, 70, 70);
    view_col.setLabelProvider(new CellLabelProvider() {
        @Override
        public void update(final ViewerCell cell) {
            final ModelItem item = (ModelItem) cell.getElement();
            cell.setText(item.getDisplayName());
        }

        @Override
        public String getToolTipText(Object element) {
            return Messages.TraceDisplayNameTT;
        }
    });
    new TableColumnSortHelper<ModelItem>(table_viewer, view_col) {
        @Override
        public int compare(final ModelItem item1, final ModelItem item2) {
            return item1.getDisplayName().compareTo(item2.getDisplayName());
        }
    };
    view_col.setEditingSupport(new EditSupportBase(table_viewer) {
        @Override
        protected Object getValue(final Object element) {
            return ((ModelItem) element).getDisplayName();
        }

        @Override
        protected CellEditor getCellEditor(Object element) {
            editing = true;
            return super.getCellEditor(element);
        }

        @Override
        protected void setValue(final Object element, final Object value) {
            final String new_name = value.toString().trim();
            final ModelItem item = (ModelItem) element;
            if (new_name.equals(item.getDisplayName()))
                return;
            new ChangeDisplayNameCommand(operations_manager, item, new_name);
            editing = false;
        }
    });

    // Color Column ----------
    view_col = TableHelper.createColumn(table_layout, table_viewer, Messages.Color, 40, 10);
    view_col.setLabelProvider(new ColorCellLabelProvider<ModelItem>() {
        @Override
        protected Color getColor(ModelItem item) {
            return color_registry.createColor(SWTMediaPool.getRGB(item.getPaintColor()));
        }
    });
    view_col.setEditingSupport(new EditSupportBase(table_viewer) {
        @Override
        protected CellEditor getCellEditor(final Object element) {
            editing = true;
            return new RGBCellEditor(table_viewer.getTable());
        }

        @Override
        protected Object getValue(final Object element) {
            return ((ModelItem) element).getRGBColor();
        }

        @Override
        protected void setValue(final Object element, final Object value) {
            new ChangeColorCommand(operations_manager, (ModelItem) element, SWTMediaPool.getJFX((RGB) value));
            editing = false;
        }
    });

    // Selected sample time stamp and value
    view_col = TableHelper.createColumn(table_layout, table_viewer, Messages.CursorTimestamp, 150, 30);
    view_col.setLabelProvider(new CellLabelProvider() {
        @Override
        public void update(final ViewerCell cell) {
            final ModelItem item = (ModelItem) cell.getElement();
            final Optional<PlotDataItem<Instant>> sample = item.getSelectedSample();
            if (sample.isPresent())
                cell.setText(TimeHelper.format(sample.get().getPosition()));
            else
                cell.setText(Messages.NotApplicable);
        }

        @Override
        public String getToolTipText(Object element) {
            return Messages.CursorTimestampTT;
        }
    });
    view_col = TableHelper.createColumn(table_layout, table_viewer, Messages.CursorValue, 40, 30);
    view_col.setLabelProvider(new CellLabelProvider() {
        @Override
        public void update(final ViewerCell cell) {
            final ModelItem item = (ModelItem) cell.getElement();
            final Optional<PlotDataItem<Instant>> sample = item.getSelectedSample();
            if (sample.isPresent()) {
                final PlotSample plot_sample = (PlotSample) sample.get();
                String text = DefaultVTypeFormat.get().format(plot_sample.getVType());
                final String units = item.getUnits();
                if (units != null)
                    text += " " + units; //$NON-NLS-1$
                cell.setText(text);
            } else
                cell.setText(Messages.NotApplicable);
        }

        @Override
        public String getToolTipText(Object element) {
            return Messages.CursorValueTT;
        }
    });

    // Scan Period Column (only applies to PVItems) ----------
    view_col = TableHelper.createColumn(table_layout, table_viewer, Messages.ScanPeriod, 70, 10);
    view_col.setLabelProvider(new CellLabelProvider() {
        @Override
        public void update(final ViewerCell cell) {
            final ModelItem item = (ModelItem) cell.getElement();
            if (item instanceof PVItem)
                cell.setText(Double.toString(((PVItem) item).getScanPeriod()));
            else
                cell.setText(Messages.NotApplicable);
        }

        @Override
        public String getToolTipText(final Object element) {
            if (!(element instanceof PVItem))
                return null;
            return Messages.ScanPeriodTT;
        }

    });
    view_col.setEditingSupport(new EditSupportBase(table_viewer) {
        @Override
        protected boolean canEdit(Object element) {
            return element instanceof PVItem;
        }

        @Override
        protected CellEditor getCellEditor(Object element) {
            editing = true;
            return super.getCellEditor(element);
        }

        @Override
        protected Object getValue(final Object element) {
            if (element instanceof PVItem)
                return Double.toString(((PVItem) element).getScanPeriod());
            else
                return Messages.NotApplicable;
        }

        @Override
        protected void setValue(final Object element, final Object value) {
            if (!(element instanceof PVItem))
                return;
            final PVItem pv = (PVItem) element;
            try {
                final double period = Double.parseDouble(value.toString().trim());
                if (period != pv.getScanPeriod())
                    new ChangeSamplePeriodCommand(shell, operations_manager, pv, period);
                editing = false;
            } catch (NumberFormatException ex) {
                // Display will revert to original value
                return;
            }
        }
    });

    // Buffer size Column (only applies to PVItems) ----------
    view_col = TableHelper.createColumn(table_layout, table_viewer, Messages.LiveSampleBufferSize, 70, 10);
    view_col.setLabelProvider(new CellLabelProvider() {
        @Override
        public void update(final ViewerCell cell) {
            final ModelItem item = (ModelItem) cell.getElement();
            if (item instanceof PVItem)
                cell.setText(Integer.toString(((PVItem) item).getLiveCapacity()));
            else
                cell.setText(Messages.NotApplicable);
        }

        @Override
        public String getToolTipText(final Object element) {
            if (!(element instanceof PVItem))
                return null;
            final PVItem pv = (PVItem) element;
            return NLS.bind(Messages.LiveBufferSizeInfoFmt, pv.getLiveCapacity(),
                    new RelativeTime(pv.getLiveCapacity()).toString());
        }
    });
    view_col.setEditingSupport(new EditSupportBase(table_viewer) {
        @Override
        protected boolean canEdit(Object element) {
            return element instanceof PVItem;
        }

        @Override
        protected Object getValue(final Object element) {
            if (element instanceof PVItem)
                return Integer.toString(((PVItem) element).getLiveCapacity());
            else
                return Messages.NotApplicable;
        }

        @Override
        protected CellEditor getCellEditor(Object element) {
            editing = true;
            return super.getCellEditor(element);
        }

        @Override
        protected void setValue(final Object element, final Object value) {
            if (!(element instanceof PVItem))
                return;
            final PVItem pv = (PVItem) element;
            try {
                final int size = Integer.parseInt(value.toString().trim());
                if (size != pv.getLiveCapacity())
                    new ChangeLiveCapacityCommand(shell, operations_manager, pv, size);
                editing = false;
            } catch (NumberFormatException ex) {
                // Display will revert to original value
                return;
            }
        }
    });

    // Axis Column ----------
    view_col = TableHelper.createColumn(table_layout, table_viewer, Messages.Axis, 60, 30);
    view_col.setLabelProvider(new CellLabelProvider() {
        @Override
        public void update(final ViewerCell cell) {
            final ModelItem item = (ModelItem) cell.getElement();
            cell.setText(item.getAxis().getName());
        }

        @Override
        public String getToolTipText(Object element) {
            return Messages.AxisTT;
        }
    });
    new TableColumnSortHelper<ModelItem>(table_viewer, view_col) {
        @Override
        public int compare(final ModelItem item1, final ModelItem item2) {
            final int cmp = item1.getAxis().getName().compareTo(item2.getAxis().getName());
            if (cmp != 0)
                return cmp;
            return item1.getDisplayName().compareTo(item2.getDisplayName());
        }
    };
    view_col.setEditingSupport(new EditSupportBase(table_viewer) { // Thread-safe copy of model axes as this editor is invoked
        final List<AxisConfig> axes = new ArrayList<>();

        @Override
        protected CellEditor getCellEditor(final Object element) {
            editing = true;
            final List<String> axis_names = new ArrayList<>();
            axes.clear();
            for (AxisConfig axis : model.getAxes()) {
                axes.add(axis);
                axis_names.add(axis.getName());
            }
            final ComboBoxCellEditor combo = new ComboBoxCellEditor(table_viewer.getTable(),
                    axis_names.toArray(new String[axis_names.size()]), SWT.READ_ONLY);
            combo.setValue(getValue(element));
            return combo;
        }

        @Override
        protected Object getValue(final Object element) {
            return model.getAxisIndex(((ModelItem) element).getAxis());
        }

        @Override
        protected void setValue(final Object element, final Object value) {
            final int axis_index = ((Integer) value).intValue();
            final AxisConfig axis = axes.get(axis_index);
            final ModelItem item = (ModelItem) element;
            if (axis != item.getAxis())
                new ChangeAxisCommand(operations_manager, item, axis);
            editing = false;
        }
    });

    // Trace Type Column ----------
    view_col = TableHelper.createColumn(table_layout, table_viewer, Messages.TraceType, 75, 10);
    view_col.setLabelProvider(new CellLabelProvider() {
        @Override
        public void update(final ViewerCell cell) {
            final ModelItem item = (ModelItem) cell.getElement();
            cell.setText(item.getTraceType().toString());
        }

        @Override
        public String getToolTipText(Object element) {
            return Messages.TraceTypeTT;
        }
    });
    view_col.setEditingSupport(new EditSupportBase(table_viewer) {
        @Override
        protected CellEditor getCellEditor(final Object element) {
            editing = true;
            final ComboBoxCellEditor combo = new ComboBoxCellEditor(table_viewer.getTable(),
                    TraceType.getDisplayNames(), SWT.READ_ONLY);
            combo.setValue(getValue(element));
            return combo;
        }

        @Override
        protected Object getValue(final Object element) {
            return ((ModelItem) element).getTraceType().ordinal();
        }

        @Override
        protected void setValue(final Object element, final Object value) {
            final TraceType trace_type = TraceType.values()[(((Integer) value).intValue())];
            final ModelItem item = (ModelItem) element;
            if (trace_type != item.getTraceType())
                new ChangeTraceTypeCommand(operations_manager, item, trace_type);
            editing = false;
        }
    });

    // Line Width Column ----------
    view_col = TableHelper.createColumn(table_layout, table_viewer, Messages.TraceLineWidth, 40, 10);
    view_col.setLabelProvider(new CellLabelProvider() {
        @Override
        public void update(final ViewerCell cell) {
            final ModelItem item = (ModelItem) cell.getElement();
            cell.setText(Integer.toString(item.getLineWidth()));
        }

        @Override
        public String getToolTipText(Object element) {
            return Messages.TraceLineWidthTT;
        }

    });
    view_col.setEditingSupport(new EditSupportBase(table_viewer) {
        @Override
        protected Object getValue(final Object element) {
            return Integer.toString(((ModelItem) element).getLineWidth());
        }

        @Override
        protected CellEditor getCellEditor(Object element) {
            editing = true;
            return super.getCellEditor(element);
        }

        @Override
        protected void setValue(final Object element, final Object value) {
            int width;
            try {
                width = Integer.parseInt(value.toString().trim());
            } catch (NumberFormatException ex) {
                width = 0;
            }
            final ModelItem item = (ModelItem) element;
            if (width != item.getLineWidth())
                new ChangeLineWidthCommand(operations_manager, item, width);
            editing = false;
        }
    });

    // Line Style Column ----------
    view_col = TableHelper.createColumn(table_layout, table_viewer, Messages.TraceLineStyle, 75, 10);
    view_col.setLabelProvider(new CellLabelProvider() {
        @Override
        public void update(final ViewerCell cell) {
            final ModelItem item = (ModelItem) cell.getElement();
            cell.setText(item.getLineStyle().toString());
        }

        @Override
        public String getToolTipText(Object element) {
            return Messages.TraceLineStyleTT;
        }
    });
    view_col.setEditingSupport(new EditSupportBase(table_viewer) {
        @Override
        protected CellEditor getCellEditor(final Object element) {
            editing = true;
            final ComboBoxCellEditor combo = new ComboBoxCellEditor(table_viewer.getTable(),
                    LineStyle.getDisplayNames(), SWT.READ_ONLY);
            combo.setValue(getValue(element));
            return combo;
        }

        @Override
        protected Object getValue(final Object element) {
            return ((ModelItem) element).getLineStyle().ordinal();
        }

        @Override
        protected void setValue(final Object element, final Object value) {
            final LineStyle line_style = LineStyle.values()[((Integer) value).intValue()];
            final ModelItem item = (ModelItem) element;
            if (line_style != item.getLineStyle())
                new ChangeLineStyleCommand(operations_manager, item, line_style);
            editing = false;
        }
    });

    // Point Type Column ----------
    view_col = TableHelper.createColumn(table_layout, table_viewer, Messages.PointType, 75, 10);
    view_col.setLabelProvider(new CellLabelProvider() {
        @Override
        public void update(final ViewerCell cell) {
            final ModelItem item = (ModelItem) cell.getElement();
            cell.setText(item.getPointType().toString());
        }

        @Override
        public String getToolTipText(Object element) {
            return Messages.PointTypeTT;
        }
    });
    view_col.setEditingSupport(new EditSupportBase(table_viewer) {
        @Override
        protected CellEditor getCellEditor(final Object element) {
            editing = true;
            final ComboBoxCellEditor combo = new ComboBoxCellEditor(table_viewer.getTable(),
                    PointType.getDisplayNames(), SWT.READ_ONLY);
            combo.setValue(getValue(element));
            return combo;
        }

        @Override
        protected Object getValue(final Object element) {
            return ((ModelItem) element).getPointType().ordinal();
        }

        @Override
        protected void setValue(final Object element, final Object value) {
            final PointType point_type = PointType.values()[((Integer) value).intValue()];
            final ModelItem item = (ModelItem) element;
            if (point_type != item.getPointType())
                new ChangePointTypeCommand(operations_manager, item, point_type);
            editing = false;
        }
    });

    // Point Size Column ----------
    view_col = TableHelper.createColumn(table_layout, table_viewer, Messages.PointSize, 40, 10);
    view_col.setLabelProvider(new CellLabelProvider() {
        @Override
        public void update(final ViewerCell cell) {
            final ModelItem item = (ModelItem) cell.getElement();
            cell.setText(Integer.toString(item.getPointSize()));
        }

        @Override
        public String getToolTipText(Object element) {
            return Messages.PointSizeTT;
        }

    });
    view_col.setEditingSupport(new EditSupportBase(table_viewer) {
        @Override
        protected Object getValue(final Object element) {
            return Integer.toString(((ModelItem) element).getPointSize());
        }

        @Override
        protected CellEditor getCellEditor(Object element) {
            editing = true;
            return super.getCellEditor(element);
        }

        @Override
        protected void setValue(final Object element, final Object value) {
            int size;
            try {
                size = Integer.parseInt(value.toString().trim());
            } catch (NumberFormatException ex) {
                size = 0;
            }
            final ModelItem item = (ModelItem) element;
            if (size != item.getPointSize())
                new ChangePointSizeCommand(operations_manager, item, size);
            editing = false;
        }
    });

    // Request Type Column ----------
    view_col = TableHelper.createColumn(table_layout, table_viewer, Messages.RequestType, 75, 10);
    view_col.setLabelProvider(new CellLabelProvider() {
        @Override
        public void update(final ViewerCell cell) {
            final ModelItem item = (ModelItem) cell.getElement();
            if (item instanceof PVItem)
                cell.setText(((PVItem) item).getRequestType().toString());
            else
                cell.setText(Messages.NotApplicable);
        }

        @Override
        public String getToolTipText(Object element) {
            return Messages.RequestTypeTT;
        }
    });
    // Edit as boolean: Raw == false,  Optimized == true
    view_col.setEditingSupport(new EditSupportBase(table_viewer) {
        @Override
        protected boolean canEdit(final Object element) {
            return element instanceof PVItem;
        }

        @Override
        protected CellEditor getCellEditor(final Object element) {
            editing = true;
            return new CheckboxCellEditor(((TableViewer) getViewer()).getTable());
        }

        @Override
        protected Object getValue(final Object element) {
            return ((PVItem) element).getRequestType() == RequestType.OPTIMIZED;
        }

        @Override
        protected void setValue(final Object element, final Object value) {
            final PVItem item = (PVItem) element;
            final RequestType request_type = ((Boolean) value).booleanValue() ? RequestType.OPTIMIZED
                    : RequestType.RAW;
            if (request_type == RequestType.RAW && prompt_for_raw_data_request) {
                if (!MessageDialog.openQuestion(shell, Messages.RequestTypeWarning,
                        Messages.RequestTypeWarningDetail))
                    return;
                prompt_for_raw_data_request = false;
            }
            new ChangeRequestTypeCommand(operations_manager, item, request_type);
            editing = false;
        }
    });

    // Waveform Index Column ----------
    view_col = TableHelper.createColumn(table_layout, table_viewer, Messages.WaveformIndexCol, 40, 10);
    view_col.setLabelProvider(new CellLabelProvider() {
        @Override
        public void update(final ViewerCell cell) {
            final ModelItem item = (ModelItem) cell.getElement();
            cell.setText(Integer.toString(item.getWaveformIndex()));
        }

        @Override
        public String getToolTipText(Object element) {
            return Messages.WaveformIndexColTT;
        }

    });
    view_col.setEditingSupport(new EditSupportBase(table_viewer) {
        @Override
        protected Object getValue(final Object element) {
            return Integer.toString(((ModelItem) element).getWaveformIndex());
        }

        @Override
        protected CellEditor getCellEditor(Object element) {
            editing = true;
            return super.getCellEditor(element);
        }

        @Override
        protected void setValue(final Object element, final Object value) {
            int index;
            try {
                index = Integer.parseInt(value.toString().trim());
                if (index < 0)
                    return;
                final ModelItem item = (ModelItem) element;
                if (index != item.getWaveformIndex())
                    new ChangeWaveformIndexCommand(operations_manager, item, index);
            } catch (NumberFormatException ex) {
                return;
            } finally {
                editing = false;
            }

        }
    });

    ColumnViewerToolTipSupport.enableFor(table_viewer);
}

From source file:org.eclipse.buildship.ui.external.viewer.FilteredTree.java

License:Open Source License

/**
 * Create the button that clears the text.
 *
 * @param parent parent <code>Composite</code> of toolbar button
 *///from ww w .ja v a  2s. c  o  m
private void createClearText(Composite parent) {
    // only create the button if the text widget doesn't support one
    // natively
    if ((filterText.getStyle() & SWT.ICON_CANCEL) == 0) {

        final Label clearButton = new Label(parent, SWT.NONE);
        ResourceManager resourceManager = new LocalResourceManager(JFaceResources.getResources(), clearButton);

        final Image inactiveImage = resourceManager
                .createImage(JFaceResources.getImageRegistry().getDescriptor(DISABLED_CLEAR_ICON));
        final Image activeImage = resourceManager
                .createImage(JFaceResources.getImageRegistry().getDescriptor(CLEAR_ICON));
        final Image pressedImage = resourceManager
                .createImage(JFaceResources.getImageRegistry().getDescriptor(PRESSED_CLEAR_ICON));

        clearButton.setLayoutData(new GridData(SWT.BEGINNING, SWT.CENTER, false, false));
        clearButton.setImage(inactiveImage);
        clearButton.setBackground(parent.getDisplay().getSystemColor(SWT.COLOR_LIST_BACKGROUND));
        clearButton.setToolTipText(ViewerMessages.FilteredTree_ClearToolTip);
        clearButton.addMouseListener(new MouseAdapter() {

            private MouseMoveListener fMoveListener;

            @Override
            public void mouseDown(MouseEvent e) {
                clearButton.setImage(pressedImage);
                fMoveListener = new MouseMoveListener() {

                    private boolean fMouseInButton = true;

                    @Override
                    public void mouseMove(MouseEvent e) {
                        boolean mouseInButton = isMouseInButton(e);
                        if (mouseInButton != fMouseInButton) {
                            fMouseInButton = mouseInButton;
                            clearButton.setImage(mouseInButton ? pressedImage : inactiveImage);
                        }
                    }
                };
                clearButton.addMouseMoveListener(fMoveListener);
            }

            @Override
            public void mouseUp(MouseEvent e) {
                if (fMoveListener != null) {
                    clearButton.removeMouseMoveListener(fMoveListener);
                    fMoveListener = null;
                    boolean mouseInButton = isMouseInButton(e);
                    clearButton.setImage(mouseInButton ? activeImage : inactiveImage);
                    if (mouseInButton) {
                        clearText();
                        filterText.setFocus();
                    }
                }
            }

            private boolean isMouseInButton(MouseEvent e) {
                Point buttonSize = clearButton.getSize();
                return 0 <= e.x && e.x < buttonSize.x && 0 <= e.y && e.y < buttonSize.y;
            }
        });
        clearButton.addMouseTrackListener(new MouseTrackListener() {

            @Override
            public void mouseEnter(MouseEvent e) {
                clearButton.setImage(activeImage);
            }

            @Override
            public void mouseExit(MouseEvent e) {
                clearButton.setImage(inactiveImage);
            }

            @Override
            public void mouseHover(MouseEvent e) {
            }
        });
        clearButton.getAccessible().addAccessibleListener(new AccessibleAdapter() {

            @Override
            public void getName(AccessibleEvent e) {
                e.result = ViewerMessages.FilteredTree_AccessibleListenerClearButton;
            }
        });
        clearButton.getAccessible().addAccessibleControlListener(new AccessibleControlAdapter() {

            @Override
            public void getRole(AccessibleControlEvent e) {
                e.detail = ACC.ROLE_PUSHBUTTON;
            }
        });
        this.clearButtonControl = clearButton;
    }
}