Example usage for org.eclipse.jface.viewers ViewerCell setForeground

List of usage examples for org.eclipse.jface.viewers ViewerCell setForeground

Introduction

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

Prototype

public void setForeground(Color foreground) 

Source Link

Document

Set the foreground color of the cell.

Usage

From source file:org.eclipselabs.e4.tapiji.translator.ui.treeviewer.provider.TreeViewerLabelProvider.java

License:Open Source License

private void searchStyle(final ViewerCell cell, final Term term, final int columnIndex) {
    if (isMatchingToPattern(term, columnIndex)) {
        final List<FilterRegion> regions = ((FilterInfo) term.getInfo())
                .getFoundInTranslationRanges(getColumnLocale(columnIndex));

        StyleRange style;/*from  w  w  w .  ja  v a  2  s.  co m*/
        for (final FilterRegion reg : regions) {
            style = new StyleRange(reg.getOffset(), reg.getLength(), COLOR_BLACK, COLOR_INFO, SWT.BOLD);
            STYLE_RANGES.add(style);
        }
        cell.setStyleRanges(STYLE_RANGES.toArray(new StyleRange[STYLE_RANGES.size()]));
    } else {
        cell.setForeground(COLOR_BLACK);
    }
}

From source file:org.eclipsetrader.ui.internal.trading.portfolio.GainLabelProvider.java

License:Open Source License

@Override
public void update(ViewerCell cell) {
    if (!(cell.getElement() instanceof IViewItem)) {
        return;/*ww w  . j a va  2s  .c  o m*/
    }

    GainViewItemVisitor visitor = new GainViewItemVisitor();
    ((IViewItem) cell.getElement()).accept(visitor);

    double value = visitor.getValue();
    double percentage = visitor.getPercentage();

    cell.setText((value > 0 ? "+" : "") + formatter.format(value) + " (" + (value > 0 ? "+" : "")
            + percentageFormatter.format(percentage) + "%)");
    cell.setForeground(value != 0 ? value > 0 ? positiveColor : negativeColor : null);

    if (cell.getElement() instanceof BrokerElement) {
        cell.setFont(font);
    }
}

From source file:org.eclipsetrader.ui.internal.views.ViewItemLabelProvider.java

License:Open Source License

@Override
public void update(ViewerCell cell) {
    IViewItem element = (IViewItem) cell.getElement();
    IAdaptable[] values = element.getValues();

    if (values != null && cell.getColumnIndex() >= 0 && cell.getColumnIndex() < values.length) {
        if (values[cell.getColumnIndex()] != null) {
            String s = (String) values[cell.getColumnIndex()].getAdapter(String.class);
            if (s != null && !cell.getText().equals(s)) {
                cell.setText(s);/*ww w . j a  va 2 s . c  o  m*/
            }

            Image i = (Image) values[cell.getColumnIndex()].getAdapter(Image.class);
            if (i != cell.getImage()) {
                cell.setImage(i);
            }

            Color color = (Color) values[cell.getColumnIndex()].getAdapter(Color.class);
            if (color != null) {
                cell.setForeground(color);
            }
        } else {
            if (!cell.getText().equals("")) {
                cell.setText("");
            }
            if (null != cell.getImage()) {
                cell.setImage(null);
            }
            cell.setForeground(null);
        }
    } else {
        if (!cell.getText().equals("")) {
            cell.setText("");
        }
        if (null != cell.getImage()) {
            cell.setImage(null);
        }
        cell.setForeground(null);
    }

    updateBackground(cell);
}

From source file:org.eclipsetrader.ui.internal.views.WatchListViewCellLabelProvider.java

License:Open Source License

@Override
public void update(ViewerCell cell) {
    WatchListViewItem element = (WatchListViewItem) cell.getElement();

    IAdaptable adaptableValue = (IAdaptable) attributeMaps[0].get(element);
    WatchListViewCellAttribute attribute = (WatchListViewCellAttribute) attributeMaps[1].get(element);
    if (adaptableValue == null) {
        return;//from w  w w.jav a 2 s.  co m
    }

    if (!objectEquals(adaptableValue, valueMap.get(element))) {
        String text = (String) adaptableValue.getAdapter(String.class);
        if (text == null) {
            text = ""; //$NON-NLS-1$
        }
        if (!text.equals(cell.getText())) {
            cell.setText(text);
        }

        cell.setForeground((Color) adaptableValue.getAdapter(Color.class));
        cell.setFont((Font) adaptableValue.getAdapter(Font.class));

        ImageData imageData = (ImageData) adaptableValue.getAdapter(ImageData.class);
        if (imageData != null) {
            imageData.transparentPixel = imageData.palette.getPixel(new RGB(255, 255, 255));
            Image newImage = new Image(Display.getDefault(), imageData);
            Image oldImage = cell.getImage();
            cell.setImage(newImage);
            if (oldImage != null) {
                oldImage.dispose();
            }
        } else {
            Image image = (Image) adaptableValue.getAdapter(Image.class);
            cell.setImage(image != null && image.isDisposed() ? null : image);
        }
        valueMap.put(element, adaptableValue);
    }

    if (!objectEquals(attribute, decoratorMap.get(element))) {
        if (ownerDrawEnabled) {
            cell.setBackground(null);
            Rectangle rect = cell.getBounds();
            cell.getControl().redraw(rect.x, rect.y, rect.width, rect.height, false);
        } else {
            if (attribute == null) {
                cell.setBackground(null);
            } else {
                TableItem tableItem = (TableItem) cell.getViewerRow().getItem();
                int rowIndex = tableItem.getParent().indexOf(tableItem);
                if ((rowIndex & 1) != 0) {
                    if (attribute.oddBackground == null || !attribute.oddBackground.isDisposed()) {
                        cell.setBackground(attribute.oddBackground);
                    }
                } else {
                    if (attribute.evenBackground == null || !attribute.evenBackground.isDisposed()) {
                        cell.setBackground(attribute.evenBackground);
                    }
                }
            }
        }
        decoratorMap.put(element, attribute);
    }
}

From source file:org.eclipsetrader.ui.trading.OrdersLabelProviderWrapper.java

License:Open Source License

@Override
public void update(ViewerCell cell) {
    Object element = cell.getElement();
    cell.setText(labelProvider.getText(element));
    cell.setImage(labelProvider.getImage(element));
    cell.setBackground(labelProvider.getBackground(element));

    Color color = labelProvider.getForeground(element);
    cell.setForeground(color != null ? color : getForeground(element));

    cell.setFont(labelProvider.getFont(element));
}

From source file:org.emftrace.quarc.ui.views.PropertiesView.java

License:Open Source License

/**
 * fills the TableViewer with ratings//  w w  w.j  ava 2s. com
 * @param tableViewer a TableViewer
 * @param builder the AbstractElementGraphBuilder
 * @param builder the AbstractElementGraphBuilder
 * @param heatmapCheckbox the heatmap checkbox
 * @param symbolsCheckbox the symbols checkbox
 * @grlSymbolsCheckbox the GRL symbols checkbox
 * @param attributeExplorerCheckbox the attribute explorer checkbox
 * @param thresholdSpinner the threshold Spinner
 * @param thresholdScale  the threshold Scale 
 * @param thresholdCombo the threshold Combo
 * @param showRatingsToGoals show Ratings to Goals (true) of Priniplies (false)
 */
private void fillTable(final TableViewer tableViewer, final AbstractElementGraphBuilder builder,
        final Button heatmapCheckbox, final Button symbolsCheckbox, final Button grlSymbolsCheckbox,
        final Button attributeExplorerCheckbox, final Spinner thresholdSpinner, final Scale thresholdScale,
        final Combo thresholdCombo, final boolean showRatingsToGoals) {

    TableViewerColumn indexColumn = new TableViewerColumn(tableViewer, SWT.NONE);
    TableViewerColumn nameColumn = new TableViewerColumn(tableViewer, SWT.NONE);
    indexColumn.getColumn().setText("rank");
    indexColumn.getColumn().setWidth(75);
    indexColumn.getColumn().setToolTipText("the rank of the alternative element");
    nameColumn.getColumn().setText("name");
    nameColumn.getColumn().setWidth(250);
    nameColumn.getColumn().setToolTipText("the name of the alternative element");

    heatmapCheckbox.addSelectionListener(new SelectionListener() {

        @Override
        public void widgetSelected(SelectionEvent e) {
            tableViewer.refresh();
        }

        @Override
        public void widgetDefaultSelected(SelectionEvent e) {
        }

    });

    thresholdSpinner.addSelectionListener(new SelectionListener() {

        @Override
        public void widgetSelected(SelectionEvent e) {
            tableViewer.refresh();
        }

        @Override
        public void widgetDefaultSelected(SelectionEvent e) {
        }

    });

    thresholdScale.addSelectionListener(new SelectionListener() {

        @Override
        public void widgetSelected(SelectionEvent e) {
            tableViewer.refresh();
        }

        @Override
        public void widgetDefaultSelected(SelectionEvent e) {
        }

    });

    attributeExplorerCheckbox.addSelectionListener(new SelectionListener() {

        @Override
        public void widgetSelected(SelectionEvent e) {
            tableViewer.refresh();
        }

        @Override
        public void widgetDefaultSelected(SelectionEvent e) {
        }

    });

    thresholdCombo.addSelectionListener(new SelectionListener() {

        @Override
        public void widgetSelected(SelectionEvent e) {
            tableViewer.refresh();
        }

        @Override
        public void widgetDefaultSelected(SelectionEvent e) {
        }

    });

    symbolsCheckbox.addSelectionListener(new SelectionListener() {

        @Override
        public void widgetSelected(SelectionEvent e) {
            tableViewer.refresh();
        }

        @Override
        public void widgetDefaultSelected(SelectionEvent e) {
        }

    });

    grlSymbolsCheckbox.addSelectionListener(new SelectionListener() {

        @Override
        public void widgetSelected(SelectionEvent e) {
            tableViewer.refresh();
        }

        @Override
        public void widgetDefaultSelected(SelectionEvent e) {
        }

    });

    nameColumn.setLabelProvider(new CellLabelProvider() {
        public void update(ViewerCell cell) {
            cell.setText(((Element) cell.getElement()).getName());
        }
    });

    indexColumn.setLabelProvider(new CellLabelProvider() {
        public void update(ViewerCell cell) {
            cell.setText(String.valueOf(tableViewer.getTable().indexOf((TableItem) cell.getItem()) + 1)); // +1 due to index
            // starts with 0
        }
    });

    new ColumnViewerSorter(tableViewer, nameColumn) {

        protected int doCompare(Viewer viewer, Object e1, Object e2) {
            return ((Element) e1).getName().compareTo(((Element) e2).getName());
        }

    };

    final HashMap<TableColumn, Element> elementColumnMap = new HashMap<TableColumn, Element>();

    /////add an ExpandListener to all nodes
    final IExpandListener expandListener = new IExpandListener() {

        @Override
        public void expanded() {
            tableViewer.refresh();

        }

        @Override
        public void collapsed() {
            tableViewer.refresh();

        }
    };

    for (Object node : builder.getZestGraph().getNodes()) {
        if (node instanceof GSSElementGraphNode) {
            ((GSSElementGraphNode) node).getElementFigure().addExpandListener(expandListener);
        }
    }

    /////remove the ExpandListener after dispose
    tableViewer.getTable().addDisposeListener(new DisposeListener() {

        @Override
        public void widgetDisposed(DisposeEvent e) {
            for (Object node : builder.getZestGraph().getNodes()) {
                if (node instanceof GSSElementGraphNode) {
                    ((GSSElementGraphNode) node).getElementFigure().removeExpandListener(expandListener);
                }
            }

        }
    });

    //the content provider
    ///show elements of visible nodes only
    tableViewer.setContentProvider(new ArrayContentProvider() {

        @Override
        public Object[] getElements(Object inputElement) {
            @SuppressWarnings("unchecked")
            //TODO suppresswarning!
            List<Element> inputList = (List<Element>) inputElement;
            List<Element> result = new ArrayList<Element>();
            for (Element e : inputList) {
                if (builder.getNodeForElement(e).isVisbile())
                    result.add(e);
            }
            Element[] output = new Element[result.size()];
            int i = 0;
            for (Element e : result) {
                output[i] = e;
                i++;
            }
            return output;
        }

    });

    final List<Element> leafElements = new ArrayList<Element>();
    final List<Element> markedLeafElements = new ArrayList<Element>();
    boolean hasMarkedElements = !builder.getSelectedElements().isEmpty();

    if (showRatingsToGoals) {
        leafElements.addAll(builder.getCacheManager().getLeafApplicableElementElements(GSSLayer.layer1));
        if (hasMarkedElements)
            markedLeafElements.addAll(builder.getMarkedLeafGoals());
    } else {
        leafElements.addAll(builder.getCacheManager().getLeafApplicableElementElements(GSSLayer.layer3));
        if (hasMarkedElements)
            markedLeafElements.addAll(builder.getMarkedLeafPrinciples());

    }

    boolean weightsIncluded = false;
    if (showRatingsToGoals)
        weightsIncluded = !builder.getCacheManager().getSelectedGoals().isEmpty();
    else
        weightsIncluded = !builder.getCacheManager().getSelectedPrinciples().isEmpty();

    for (final Object leafElement : leafElements) {
        // if (leafElement instanceof GSS.Goal) {
        if (weightsIncluded) {
            final TableViewerColumn weightedImpactViewerColumn = new TableViewerColumn(tableViewer, SWT.NONE);
            elementColumnMap.put(weightedImpactViewerColumn.getColumn(), (Element) leafElement);

            Float priority = null;

            if (leafElement instanceof Goal) {
                priority = builder.getCacheManager().getSelectedGoalPriority((Goal) leafElement);
            } else if (leafElement instanceof Principle) {
                priority = builder.getCacheManager().getSelectedPrinciplePriority((Principle) leafElement);
            }
            if (priority == null)
                priority = 0.0f;

            weightedImpactViewerColumn.getColumn()
                    .setText(String.format("%s (%.2f)", ((Element) leafElement).getName(), priority));
            weightedImpactViewerColumn.getColumn()
                    .setToolTipText("the weighted rating to " + ((Element) leafElement).getName());

            weightedImpactViewerColumn.getColumn().setWidth(100);

            weightedImpactViewerColumn.getColumn().setMoveable(true);
            weightedImpactViewerColumn.getColumn().setResizable(true);
            new ColumnViewerSorter(tableViewer, weightedImpactViewerColumn) {

                protected int doCompare(Viewer viewer, Object e1, Object e2) {
                    Element element = elementColumnMap.get(tableViewer.getTable().getSortColumn());
                    Float v1 = calcWeightedImpact(builder, element, (Element) e1);
                    Float v2 = calcWeightedImpact(builder, element, (Element) e2);
                    return v1.compareTo(v2);
                }
            };

            weightedImpactViewerColumn.setLabelProvider(new CellLabelProvider() {
                public void update(ViewerCell cell) {

                    String weightString = calcWeightedImpactString(builder, (Element) leafElement,
                            (Element) cell.getElement());
                    float impact = calcWeightedImpact(builder, (Element) leafElement,
                            (Element) cell.getElement());

                    Color backgroundColor = null;
                    Color foregroundColor = null;
                    if (symbolsCheckbox.getSelection()) {

                        setSymbol(cell, impact);
                    } else if (grlSymbolsCheckbox.getSelection()) {
                        setGRLSymbol(cell, impact);
                    } else {
                        cell.setFont(Display.getDefault().getSystemFont());
                        cell.setText(weightString);
                    }

                    if (attributeExplorerCheckbox.getSelection()) {
                        if (impact >= thresholdSpinner.getSelection()) {
                            backgroundColor = new Color(null, 255, 255, 0);
                            foregroundColor = new Color(null, 0, 0, 0);
                        } else {
                            backgroundColor = new Color(null, 255, 255, 255);
                            foregroundColor = new Color(null, 0, 0, 0);
                        }
                    } else if (heatmapCheckbox.getSelection()) {

                        backgroundColor = DefaultColors.getBackgroundColor(impact);
                        foregroundColor = DefaultColors.getForegroundColor(impact);
                    } else {

                        backgroundColor = new Color(null, 255, 255, 255);
                        foregroundColor = new Color(null, 0, 0, 0);
                    }

                    cell.setBackground(backgroundColor);
                    cell.setForeground(foregroundColor);

                }

            });

        }

        final TableViewerColumn unweightedImpactViewerColumn = new TableViewerColumn(tableViewer, SWT.NONE);

        elementColumnMap.put(unweightedImpactViewerColumn.getColumn(), (Element) leafElement);

        unweightedImpactViewerColumn.getColumn()
                .setText(String.format("%s", ((Element) leafElement).getName()));

        unweightedImpactViewerColumn.getColumn()
                .setToolTipText("the rating to " + ((Element) leafElement).getName());

        unweightedImpactViewerColumn.getColumn().setWidth(100);

        unweightedImpactViewerColumn.getColumn().setMoveable(true);

        unweightedImpactViewerColumn.getColumn().setResizable(true);

        new ColumnViewerSorter(tableViewer, unweightedImpactViewerColumn) {

            protected int doCompare(Viewer viewer, Object e1, Object e2) {
                Element element = elementColumnMap.get(tableViewer.getTable().getSortColumn());
                Float v1 = getRating(builder, element, (Element) e1);
                Float v2 = getRating(builder, element, (Element) e2);
                return v1.compareTo(v2);
            }
        };

        unweightedImpactViewerColumn.setLabelProvider(new CellLabelProvider() {
            public void update(ViewerCell cell) {

                String weightString = getRatingString(builder, (Element) leafElement,
                        (Element) cell.getElement());
                float impact = getRating(builder, (Element) leafElement, (Element) cell.getElement());

                Color backgroundColor = null;
                Color foregroundColor = null;
                if (symbolsCheckbox.getSelection()) {

                    setSymbol(cell, impact);

                } else if (grlSymbolsCheckbox.getSelection()) {
                    setGRLSymbol(cell, impact);
                } else {
                    cell.setFont(Display.getDefault().getSystemFont());
                    cell.setText(weightString);
                }

                if (attributeExplorerCheckbox.getSelection()) {
                    if (impact >= thresholdSpinner.getSelection()) {
                        backgroundColor = new Color(null, 255, 255, 0);
                        foregroundColor = new Color(null, 0, 0, 0);
                    } else {
                        backgroundColor = new Color(null, 255, 255, 255);
                        foregroundColor = new Color(null, 0, 0, 0);
                    }
                } else if (heatmapCheckbox.getSelection()) {

                    backgroundColor = DefaultColors.getBackgroundColor(impact);
                    foregroundColor = DefaultColors.getForegroundColor(impact);

                } else {

                    backgroundColor = new Color(null, 255, 255, 255);
                    foregroundColor = new Color(null, 0, 0, 0);
                }

                cell.setBackground(backgroundColor);
                cell.setForeground(foregroundColor);

            }

        });

        // }
    }

    setCalculators(leafElements, builder, tableViewer, symbolsCheckbox, grlSymbolsCheckbox, heatmapCheckbox,
            attributeExplorerCheckbox, thresholdSpinner, weightsIncluded, "[global]", "of all seleted goals");

    if (hasMarkedElements)
        setCalculators(markedLeafElements, builder, tableViewer, symbolsCheckbox, grlSymbolsCheckbox,
                heatmapCheckbox, attributeExplorerCheckbox, thresholdSpinner, weightsIncluded, "[selection]",
                "of the currently selection of the seleted goals only");

}

From source file:org.emftrace.quarc.ui.views.PropertiesView.java

License:Open Source License

private void setCalculators(List<Element> leafElements, AbstractElementGraphBuilder builder,
        final TableViewer tableViewer, final Button symbolsCheckbox, final Button grlSymbolsCheckbox,
        final Button heatmapCheckbox, final Button filterEnabledCheckbox, final Spinner thresholdSpinner,
        boolean weightsIncluded, String decoratorString, String tooltipDecoratorString) {
    HashMap<String, AbstractCalculator> calculators = new HashMap<String, AbstractCalculator>();
    decoratorString = " " + decoratorString;
    final HashMap<TableColumn, AbstractCalculator> calculatorsColumnMap = new HashMap<TableColumn, AbstractCalculator>();
    calculators.put("max", new MaxCalculator(leafElements, builder.getCacheManager()));
    calculators.put("min", new MinCalculator(leafElements, builder.getCacheManager()));
    calculators.put("avg", new AvgCalculator(leafElements, builder.getCacheManager()));
    if (weightsIncluded) {
        calculators.put("weighted max", new WeightedMaxCalculator(leafElements, builder.getCacheManager()));
        calculators.put("weighted min", new WeightedMinCalculator(leafElements, builder.getCacheManager()));
        calculators.put("weighted avg", new WeightedAvgCalculator(leafElements, builder.getCacheManager()));
    }//from   w w  w . ja  v a  2  s  .  com
    for (Entry<String, AbstractCalculator> entry : calculators.entrySet()) {
        final AbstractCalculator calculator = entry.getValue();
        String caption = entry.getKey();
        final TableViewerColumn viewerColumn = new TableViewerColumn(tableViewer, SWT.NONE);
        TableColumn tableColumn = viewerColumn.getColumn();
        calculatorsColumnMap.put(tableColumn, calculator);
        tableColumn.setText(caption + decoratorString);
        tableColumn.setToolTipText(caption + " " + tooltipDecoratorString);
        tableColumn.setWidth(100);

        tableColumn.setMoveable(true);
        tableColumn.setResizable(true);

        viewerColumn.setLabelProvider(new CellLabelProvider() {
            public void update(ViewerCell cell) {

                Float weight = calculator.calcAggregation((ConstrainedElement) cell.getElement());

                setCellTooltip(cell, weight);
                if (symbolsCheckbox.getSelection()) {
                    setSymbol(cell, weight);
                } else if (grlSymbolsCheckbox.getSelection()) {
                    setGRLSymbol(cell, weight);
                } else {
                    String texString = calculator
                            .calcAggregationAsString((ConstrainedElement) cell.getElement());
                    cell.setFont(Display.getDefault().getSystemFont());
                    cell.setText(texString);
                }
                Color backgroundColor = null;
                Color foregroundColor = null;

                if (filterEnabledCheckbox.getSelection()) {
                    if (weight >= thresholdSpinner.getSelection()) {
                        backgroundColor = new Color(null, 255, 255, 0);
                        foregroundColor = new Color(null, 0, 0, 0);
                    } else {
                        backgroundColor = new Color(null, 255, 255, 255);
                        foregroundColor = new Color(null, 0, 0, 0);
                    }
                } else if (heatmapCheckbox.getSelection()) {

                    backgroundColor = DefaultColors.getBackgroundColor(weight);
                    foregroundColor = DefaultColors.getForegroundColor(weight);

                } else {

                    backgroundColor = new Color(null, 255, 255, 255);
                    foregroundColor = new Color(null, 0, 0, 0);
                }
                cell.setBackground(backgroundColor);

                cell.setForeground(foregroundColor);
            }
        });

        new ColumnViewerSorter(tableViewer, viewerColumn) {

            protected int doCompare(Viewer viewer, Object e1, Object e2) {
                AbstractCalculator calculator = calculatorsColumnMap
                        .get(tableViewer.getTable().getSortColumn());

                Float v1 = calculator.calcAggregation((ConstrainedElement) e1);
                Float v2 = calculator.calcAggregation((ConstrainedElement) e2);
                return v1.compareTo(v2);
            }

        };
    }

}

From source file:org.goko.gcode.filesender.FileSenderPart.java

License:Open Source License

/**
 * Create contents of the view part.// w w w.  j av  a 2 s .  com
 *
 * @throws GkException
 */
@PostConstruct
public void createControls(final Composite parent) throws GkException {

    DropTarget dt = new DropTarget(parent, DND.DROP_MOVE);
    dt.setTransfer(new Transfer[] { FileTransfer.getInstance() });
    dt.addDropListener(new DropTargetAdapter() {
        @Override
        public void drop(DropTargetEvent event) {
            // Set the text field's text to the text being dropped
            startFileParsingJob(((String[]) event.data)[0]);
            refreshCommandTable();
        }
    });
    parent.setLayout(new FillLayout(SWT.HORIZONTAL));
    shell = parent.getShell();

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

    Group grpFile = new Group(composite, SWT.NONE);

    grpFile.setLayout(new GridLayout(1, false));
    grpFile.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
    grpFile.setText("File");

    Composite composite_2 = new Composite(grpFile, SWT.NONE);
    composite_2.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false, 1, 1));

    composite_2.setLayout(new GridLayout(3, false));

    Label lblPath = new Label(composite_2, SWT.NONE);
    lblPath.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1));

    lblPath.setText("Path :");

    txtFilepath = new Text(composite_2, SWT.BORDER);
    txtFilepath.setEditable(false);
    txtFilepath.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));

    btnBrowse = new Button(composite_2, SWT.NONE);
    btnBrowse.addMouseListener(new MouseAdapter() {
        @Override
        public void mouseUp(MouseEvent e) {
            FileDialog dialog = new FileDialog(parent.getShell());
            dialog.setText("Open GCode file...");

            String filePath = dialog.open();
            getDataModel().setFilePath(filePath);
            if (StringUtils.isNotBlank(filePath)) {
                startFileParsingJob(filePath);
                refreshCommandTable();
            }
        }

    });
    btnBrowse.setText("Browse");

    Label label = new Label(grpFile, SWT.SEPARATOR | SWT.HORIZONTAL);
    label.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));

    Composite composite_5 = new Composite(grpFile, SWT.NONE);
    composite_5.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
    composite_5.setLayout(new GridLayout(2, false));

    Label lblFileName = new Label(composite_5, SWT.NONE);
    lblFileName.setAlignment(SWT.RIGHT);
    GridData gd_lblFileName = new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1);
    gd_lblFileName.widthHint = 100;
    lblFileName.setLayoutData(gd_lblFileName);
    lblFileName.setSize(57, 15);

    lblFileName.setText("File name :");

    lblName = new Label(composite_5, SWT.NONE);
    lblName.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
    lblName.setText("--");

    Composite composite_1 = new Composite(grpFile, SWT.NONE);
    composite_1.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false, 1, 1));
    composite_1.setLayout(new GridLayout(4, false));

    Label lblLastModification = new Label(composite_1, SWT.NONE);
    lblLastModification.setText("Last modification :");
    GridData gd_lblLastModification = new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1);
    gd_lblLastModification.widthHint = 100;
    lblLastModification.setLayoutData(gd_lblLastModification);

    lblLastupdate = new Label(composite_1, SWT.NONE);
    GridData gd_lblLastupdate = new GridData(SWT.FILL, SWT.CENTER, false, false, 1, 1);
    gd_lblLastupdate.widthHint = 150;
    lblLastupdate.setLayoutData(gd_lblLastupdate);

    Label lblSize = new Label(composite_1, SWT.NONE);

    lblSize.setText("Size :");

    lblFilesize = new Label(composite_1, SWT.NONE);
    GridData gd_lblFilesize = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1);
    gd_lblFilesize.widthHint = 80;
    lblFilesize.setLayoutData(gd_lblFilesize);
    lblFilesize.setText("--");

    Group grpControls = new Group(composite, SWT.NONE);
    grpControls.setLayout(new GridLayout(1, false));
    grpControls.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
    grpControls.setText("Controls");

    Composite composite_3 = new Composite(grpControls, SWT.NONE);
    composite_3.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
    composite_3.setLayout(new GridLayout(4, false));

    btnSendFile = new Button(composite_3, SWT.NONE);
    btnSendFile.addMouseListener(new MouseAdapter() {
        @Override
        public void mouseUp(MouseEvent e) {
            progressSentCommand.setState(SWT.NORMAL);
            getController().startFileStreaming();
        }
    });
    btnSendFile.setBounds(0, 0, 75, 25);
    btnSendFile.setText("Send file");

    btnCancel = new Button(composite_3, SWT.NONE);

    btnCancel.setText("Cancel");
    btnCancel.addMouseListener(new MouseAdapter() {
        @Override
        public void mouseUp(MouseEvent e) {
            progressSentCommand.setState(SWT.PAUSED);
            getController().stopFileStreaming();
        }
    });
    Label lblProgress = new Label(composite_3, SWT.NONE);
    lblProgress.setAlignment(SWT.RIGHT);
    GridData gd_lblProgress = new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1);
    gd_lblProgress.widthHint = 100;
    lblProgress.setLayoutData(gd_lblProgress);
    lblProgress.setText("Line count :");

    totalCommandCountTxt = new Label(composite_3, SWT.NONE);
    GridData gd_totalCommandCountTxt = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1);
    gd_totalCommandCountTxt.widthHint = 80;
    totalCommandCountTxt.setLayoutData(gd_totalCommandCountTxt);
    totalCommandCountTxt.setText("--");

    Composite composite_4 = new Composite(grpControls, SWT.NONE);
    composite_4.setLayout(new GridLayout(4, false));
    composite_4.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
    composite_4.setBounds(0, 0, 64, 64);

    Label lblSentCommands = new Label(composite_4, SWT.NONE);
    lblSentCommands.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1));

    lblSentCommands.setText("Progress :");

    progressSentCommand = new ProgressBar(composite_4, SWT.NONE);
    progressSentCommand.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
    new Label(composite_4, SWT.NONE);

    sentCommandsCountTxt = new Label(composite_4, SWT.NONE);
    GridData gd_sentCommandsCountTxt = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1);
    gd_sentCommandsCountTxt.widthHint = 80;
    sentCommandsCountTxt.setLayoutData(gd_sentCommandsCountTxt);
    sentCommandsCountTxt.setText("--");

    Composite composite_6 = new Composite(grpControls, SWT.NONE);
    composite_6.setLayout(new GridLayout(5, false));

    Label lblElapsedTime = new Label(composite_6, SWT.NONE);
    lblElapsedTime.setText("Elapsed time :");

    elapsedTimeLbl = new Label(composite_6, SWT.NONE);
    GridData gd_elapsedTimeLbl = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1);
    gd_elapsedTimeLbl.widthHint = 80;
    elapsedTimeLbl.setLayoutData(gd_elapsedTimeLbl);
    elapsedTimeLbl.setText("New Label");
    new Label(composite_6, SWT.NONE);

    Label lblRemainingTime = new Label(composite_6, SWT.NONE);
    lblRemainingTime.setText("Estimated time :");

    remainingTimeLbl = new Label(composite_6, SWT.NONE);
    GridData gd_remainingTimeLbl = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1);
    gd_remainingTimeLbl.widthHint = 80;
    remainingTimeLbl.setLayoutData(gd_remainingTimeLbl);
    remainingTimeLbl.setText("New Label");

    Group grpGcodeEditor = new Group(composite, SWT.NONE);
    grpGcodeEditor.setLayout(new GridLayout(1, false));
    grpGcodeEditor.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));
    grpGcodeEditor.setText("GCode viewer");

    Composite composite_8 = new Composite(grpGcodeEditor, SWT.NONE);
    GridLayout gl_composite_8 = new GridLayout(1, false);
    gl_composite_8.verticalSpacing = 0;
    gl_composite_8.marginWidth = 0;
    gl_composite_8.marginHeight = 0;
    gl_composite_8.horizontalSpacing = 0;
    composite_8.setLayout(gl_composite_8);
    composite_8.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));

    tableViewer = new TableViewer(composite_8,
            SWT.BORDER | SWT.FULL_SELECTION | SWT.HIDE_SELECTION | SWT.VIRTUAL);
    table = tableViewer.getTable();
    table.setHeaderVisible(true);
    table.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));

    TableViewerColumn tableViewerColumn = new TableViewerColumn(tableViewer, SWT.NONE | SWT.RIGHT);
    TableColumn tblclmnLine = tableViewerColumn.getColumn();
    tblclmnLine.setWidth(50);
    tblclmnLine.setText("Line");
    tableViewerColumn.setLabelProvider(new StyledCellLabelProvider() {
        @Override
        public void update(ViewerCell cell) {
            GCodeCommand p = (GCodeCommand) cell.getElement();
            cell.setText(String.valueOf(p.getLineNumber()));
            cell.setForeground(SWTResourceManager.getColor(SWT.COLOR_DARK_GRAY));
            super.update(cell);
        }
    });

    TableViewerColumn tableViewerColumn_1 = new TableViewerColumn(tableViewer, SWT.NONE);
    TableColumn tblclmnCommand = tableViewerColumn_1.getColumn();
    tblclmnCommand.setWidth(300);
    tblclmnCommand.setText("Command");
    tableViewerColumn_1.setLabelProvider(new ColumnLabelProvider() {
        @Override
        public String getText(Object element) {
            GCodeCommand p = (GCodeCommand) element;
            return String.valueOf(p.getStringCommand());
        }
    });
    tableViewer.setContentProvider(new GCodeTableLazyContentProvider(tableViewer));

    // special settings for the lazy content provider
    tableViewer.setUseHashlookup(true);

    // create the model and set it as input
    tableViewer.setInput(new ArrayList<GCodeCommand>());
    // you must explicitly set the items count
    tableViewer.setItemCount(0);

    initCustomBindings();
}

From source file:org.jkiss.dbeaver.ext.mockdata.MockDataWizardPageSettings.java

License:Apache License

public void createControl(Composite parent) {
    Composite composite = UIUtils.createPlaceholder(parent, 1);

    {/*from w ww  .j  ava 2 s .  c  om*/
        SelectionListener changeListener = new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                updateState();
            }
        };

        Composite entityPlaceholder = UIUtils.createPlaceholder(composite, 2);
        this.entityNameText = UIUtils.createLabelText(entityPlaceholder,
                MockDataMessages.tools_mockdata_wizard_page_settings_text_entity, "", SWT.NONE | SWT.READ_ONLY);
        GridData gd = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);
        gd.widthHint = 230;
        gd.verticalIndent = 5;
        gd.horizontalIndent = 9;
        entityPlaceholder.setLayoutData(gd);

        Group settingsGroup = UIUtils.createControlGroup(composite,
                MockDataMessages.tools_mockdata_wizard_page_settings_group_settings, 4,
                GridData.FILL_HORIZONTAL, 0);
        gd = new GridData(GridData.FILL_HORIZONTAL);
        gd.verticalIndent = 5;
        settingsGroup.setLayoutData(gd);

        this.removeOldDataCheck = UIUtils.createCheckbox(settingsGroup,
                MockDataMessages.tools_mockdata_wizard_page_settings_checkbox_remove_old_data, null,
                mockDataSettings.isRemoveOldData(), 4);
        removeOldDataCheck.addSelectionListener(changeListener);

        this.rowsText = UIUtils.createLabelText(settingsGroup,
                MockDataMessages.tools_mockdata_wizard_page_settings_combo_rows,
                String.valueOf(mockDataSettings.getRowsNumber()), SWT.BORDER, new GridData(110, SWT.DEFAULT));
        rowsText.addSelectionListener(changeListener);
        rowsText.addVerifyListener(UIUtils.getLongVerifyListener(rowsText));
        rowsText.addModifyListener(new ModifyListener() {
            @Override
            public void modifyText(ModifyEvent e) {
                updateState();
            }
        });
    }

    {
        Group generatorsGroup = UIUtils.createControlGroup(composite,
                MockDataMessages.tools_mockdata_wizard_page_settings_group_generators, 5, GridData.FILL_BOTH,
                0);
        GridData gd = new GridData(GridData.FILL_BOTH);
        gd.verticalIndent = 5;
        generatorsGroup.setLayoutData(gd);

        Composite placeholder = UIUtils.createPlaceholder(generatorsGroup, 1);
        gd = new GridData(GridData.FILL_VERTICAL);
        gd.widthHint = 250;
        placeholder.setLayoutData(gd);

        Button autoAssignButton = new Button(placeholder, SWT.PUSH);
        autoAssignButton.setText(MockDataMessages.tools_mockdata_wizard_page_settings_button_autoassign);
        autoAssignButton.setImage(DBeaverIcons.getImage(UIIcon.OBJ_REFRESH));
        autoAssignButton.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                if (UIUtils.confirmAction(getShell(), MockDataMessages.tools_mockdata_wizard_title,
                        MockDataMessages.tools_mockdata_wizard_page_settings_button_autoassign_confirm)) {
                    autoAssignGenerators();
                }
            }
        });
        gd = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);
        //            gd.horizontalIndent = 5;
        autoAssignButton.setLayoutData(gd);

        generatorsTableViewer = new TableViewer(placeholder, SWT.BORDER | SWT.SINGLE | SWT.FULL_SELECTION);
        final Table table = generatorsTableViewer.getTable();

        gd = new GridData(GridData.FILL_BOTH);
        gd.verticalIndent = 5;
        table.setLayoutData(gd);
        table.setHeaderVisible(true);
        table.setLinesVisible(true);

        generatorsTableViewer.setContentProvider(new IStructuredContentProvider() {
            @Override
            public void dispose() {
            }

            @Override
            public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
            }

            @Override
            public Object[] getElements(Object inputElement) {
                if (inputElement instanceof Collection) {
                    return ((Collection<?>) inputElement).toArray();
                }
                return new Object[0];
            }
        });

        CellLabelProvider labelProvider = new CellLabelProvider() {
            @Override
            public void update(ViewerCell cell) {
                DBSAttributeBase attribute = (DBSAttributeBase) cell.getElement();
                AttributeGeneratorProperties attributeGeneratorProperties = mockDataSettings
                        .getAttributeGeneratorProperties(attribute);
                if (cell.getColumnIndex() == 0) {
                    cell.setImage(DBeaverIcons.getImage(DBValueFormatting.getTypeImage(attribute)));
                    cell.setText(attribute.getName());
                    try {
                        if (DBUtils.checkUnique(mockDataSettings.getMonitor(), mockDataSettings.getEntity(),
                                attribute) != null) {
                            cell.setFont(boldFont);
                        }
                    } catch (DBException e) {
                        log.error("Error checking the attribute '" + attribute.getName() + "' properties", e);
                    }
                    if (attributeGeneratorProperties != null && attributeGeneratorProperties.isEmpty()) {
                        cell.setForeground(table.getDisplay().getSystemColor(SWT.COLOR_RED));
                        noGeneratorInfoLabel.setVisible(true);
                    }
                } else {
                    if (attributeGeneratorProperties != null && !attributeGeneratorProperties.isEmpty()) {
                        String selectedGeneratorId = attributeGeneratorProperties.getSelectedGeneratorId();
                        String label = mockDataSettings.getGeneratorDescriptor(selectedGeneratorId).getLabel();
                        cell.setText(label.trim());
                    }
                }
            }
        };

        TableViewerColumn attributeColumn = new TableViewerColumn(generatorsTableViewer, SWT.LEFT);
        attributeColumn.setLabelProvider(labelProvider);
        attributeColumn.getColumn()
                .setText(MockDataMessages.tools_mockdata_wizard_page_settings_generatorselector_attribute);

        TableViewerColumn generatorColumn = new TableViewerColumn(generatorsTableViewer, SWT.LEFT);
        generatorColumn.setLabelProvider(labelProvider);
        TableColumn column = generatorColumn.getColumn();
        column.setText(MockDataMessages.tools_mockdata_wizard_page_settings_generatorselector_generator);

        generatorColumn.setEditingSupport(new EditingSupport(generatorsTableViewer) {
            @Override
            protected CellEditor getCellEditor(Object element) {
                DBSAttributeBase attribute = (DBSAttributeBase) element;

                AttributeGeneratorProperties attributeGenerators = mockDataSettings
                        .getAttributeGeneratorProperties(attribute);
                Set<String> generators = new LinkedHashSet<>();
                if (attributeGenerators.isEmpty()) {
                    noGeneratorInfoLabel.setVisible(true);
                    TextCellEditor textCellEditor = new TextCellEditor(generatorsTableViewer.getTable());
                    textCellEditor.getControl().setEnabled(false);
                    return textCellEditor;
                } else {
                    for (String generatorId : attributeGenerators.getGenerators()) {
                        generators.add(mockDataSettings.getGeneratorDescriptor(generatorId).getLabel());
                    }

                    CustomComboBoxCellEditor customComboBoxCellEditor = new CustomComboBoxCellEditor(
                            generatorsTableViewer, generatorsTableViewer.getTable(),
                            generators.toArray(new String[generators.size()]), SWT.BORDER | SWT.READ_ONLY);
                    return customComboBoxCellEditor;
                }
            }

            @Override
            protected boolean canEdit(Object element) {
                return true;
            } // disable the generator selection

            @Override
            protected Object getValue(Object element) {
                DBSAttributeBase attribute = (DBSAttributeBase) element;
                String selectedGenerator = mockDataSettings.getAttributeGeneratorProperties(attribute)
                        .getSelectedGeneratorId();
                if (selectedGenerator != null) {
                    return mockDataSettings.getGeneratorDescriptor(selectedGenerator).getLabel();
                } else {
                    return "";
                }
            }

            @Override
            protected void setValue(Object element, Object value) {
                DBSAttributeBase attribute = (DBSAttributeBase) element;
                selectGenerator(attribute, (String) value);
            }
        });

        table.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                saveGeneratorProperties();
                reloadProperties((DBSAttributeBase) e.item.getData(), null);
            }
        });

        // generator properties
        placeholder = UIUtils.createPlaceholder(generatorsGroup, 1);
        placeholder.setLayoutData(new GridData(GridData.FILL_BOTH));

        Composite labelCombo = UIUtils.createPlaceholder(placeholder, 5);
        gd = new GridData(GridData.FILL_HORIZONTAL);
        labelCombo.setLayoutData(gd);

        generatorCombo = new Combo(labelCombo, SWT.READ_ONLY | SWT.DROP_DOWN);
        gd = new GridData();
        gd.widthHint = 80;
        generatorCombo.setLayoutData(gd);
        generatorCombo.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                selectGenerator(selectedAttribute, generatorCombo.getText());
            }
        });

        Composite descriptionCombo = UIUtils.createPlaceholder(labelCombo, 2);
        gd = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING | GridData.FILL_HORIZONTAL);
        descriptionCombo.setLayoutData(gd);

        generatorDescriptionLabel = new Label(descriptionCombo, SWT.NONE);
        generatorDescriptionLabel
                .setFont(JFaceResources.getFontRegistry().getItalic(JFaceResources.DEFAULT_FONT));
        generatorDescriptionLabel.setText("");
        gd = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING | GridData.FILL_HORIZONTAL);
        gd.horizontalIndent = 5;
        generatorDescriptionLabel.setLayoutData(gd);

        generatorDescriptionLink = UIUtils.createLink(descriptionCombo, "", new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                if (!CommonUtils.isEmpty(generatorLinkUrl)) {
                    IWorkbenchBrowserSupport support = PlatformUI.getWorkbench().getBrowserSupport();
                    try {
                        support.getExternalBrowser().openURL(new URL(generatorLinkUrl));
                    } catch (Exception ex) {
                    }
                }
            }
        });
        gd = new GridData(GridData.HORIZONTAL_ALIGN_END);
        gd.horizontalIndent = 5;
        generatorDescriptionLink.setLayoutData(gd);

        Button resetButton = new Button(labelCombo, SWT.PUSH);
        resetButton.setText(MockDataMessages.tools_mockdata_wizard_page_settings_button_reset);
        resetButton.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                for (Object key : propertySource.getProperties().keySet()) {
                    propertySource.resetPropertyValueToDefault(key);
                }
                propsEditor.loadProperties(propertySource);
                generatorsTableViewer.refresh(true, true);
            }
        });
        gd = new GridData();
        gd.horizontalIndent = 5;
        resetButton.setLayoutData(gd);

        propsEditor = new PropertyTreeViewer(placeholder, SWT.BORDER);
        gd = new GridData(GridData.FILL_BOTH);
        gd.verticalIndent = 5;
        propsEditor.getControl().setLayoutData(gd);

        noGeneratorInfoLabel = UIUtils.createInfoLabel(composite,
                MockDataMessages.tools_mockdata_wizard_page_settings_button_info_notfound);
        //noGeneratorInfoLabel.setForeground(generatorsTableViewer.getDisplay().getSystemColor(SWT.COLOR_RED));
        gd = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);
        gd.horizontalSpan = 2;
        gd.verticalIndent = 5;
        noGeneratorInfoLabel.setLayoutData(gd);
        noGeneratorInfoLabel.setVisible(false);

        table.addControlListener(new ControlAdapter() {
            @Override
            public void controlResized(ControlEvent e) {
                UIUtils.packColumns(table);
                UIUtils.maxTableColumnsWidth(table);
                table.removeControlListener(this);
            }
        });
    }

    setControl(composite);

    boldFont = UIUtils.makeBoldFont(generatorsTableViewer.getControl().getFont());
}

From source file:org.jkiss.dbeaver.ui.dialogs.driver.DriverEditDialog.java

License:Open Source License

private void createLibrariesTab(TabFolder group) {
    GridData gd;/*from w  ww. j  a v a2 s . co  m*/
    Composite libsGroup = new Composite(group, SWT.NONE);
    libsGroup.setLayout(new GridLayout(2, false));

    {
        Composite libsListGroup = new Composite(libsGroup, SWT.NONE);
        gd = new GridData(GridData.FILL_BOTH);
        libsListGroup.setLayoutData(gd);
        GridLayout layout = new GridLayout(1, false);
        layout.marginHeight = 0;
        layout.marginWidth = 0;
        libsListGroup.setLayout(layout);

        // Additional libraries list
        libTable = new TreeViewer(libsListGroup, SWT.BORDER | SWT.MULTI | SWT.V_SCROLL | SWT.H_SCROLL);
        libTable.setContentProvider(new LibContentProvider());
        libTable.setLabelProvider(new CellLabelProvider() {
            @Override
            public void update(ViewerCell cell) {
                final Object element = cell.getElement();
                if (element instanceof DBPDriverLibrary) {
                    DBPDriverLibrary lib = (DBPDriverLibrary) element;
                    String displayName = lib.getDisplayName();
                    if (lib.getPreferredVersion() != null) {
                        displayName += " [" + lib.getPreferredVersion() + "]";
                    }
                    cell.setText(displayName);
                    File localFile = lib.getLocalFile();
                    if (localFile != null && !localFile.exists()) {
                        cell.setForeground(Display.getDefault().getSystemColor(SWT.COLOR_RED));
                    } else if (!driver.isLibraryResolved(lib)) {
                        cell.setForeground(Display.getDefault().getSystemColor(SWT.COLOR_BLUE));
                    } else {
                        cell.setForeground(null);
                    }
                    cell.setImage(DBeaverIcons.getImage(lib.getIcon()));
                } else {
                    cell.setText(element.toString());
                    cell.setImage(DBeaverIcons.getImage(UIIcon.JAR));
                }
            }
        });
        libTable.getControl().setLayoutData(new GridData(GridData.FILL_BOTH));
        libTable.getControl().addListener(SWT.Selection, new Listener() {
            @Override
            public void handleEvent(Event event) {
                changeLibSelection();
            }
        });

        // Find driver class
        boolean isReadOnly = !provider.isDriversManagable();

        Composite findClassGroup = new Composite(libsListGroup, SWT.TOP);
        findClassGroup.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
        layout = new GridLayout(3, false);
        layout.marginHeight = 0;
        layout.marginWidth = 0;
        findClassGroup.setLayout(layout);

        UIUtils.createControlLabel(findClassGroup, CoreMessages.dialog_edit_driver_label_driver_class);
        classListCombo = new Combo(findClassGroup, SWT.DROP_DOWN | SWT.READ_ONLY);
        classListCombo.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
        classListCombo.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                int selIndex = classListCombo.getSelectionIndex();
                if (selIndex >= 0) {
                    driverClassText.setText(classListCombo.getItem(selIndex));
                }
            }
        });
        classListCombo.setEnabled(!isReadOnly);
        findClassButton = new Button(findClassGroup, SWT.PUSH);
        findClassButton.setText(CoreMessages.dialog_edit_driver_button_bind_class);
        findClassButton.addListener(SWT.Selection, new Listener() {
            @Override
            public void handleEvent(Event event) {
                try {
                    DriverClassFindJob classFinder = new DriverClassFindJob(driver, "java/sql/Driver", true);
                    new ProgressMonitorDialog(getShell()).run(true, true, classFinder);

                    if (classListCombo != null && !classListCombo.isDisposed()) {
                        java.util.List<String> classNames = classFinder.getDriverClassNames();
                        classListCombo.setItems(classNames.toArray(new String[classNames.size()]));
                        classListCombo.setListVisible(true);
                    }

                } catch (InvocationTargetException e) {
                    log.error(e.getTargetException());
                } catch (InterruptedException e) {
                    log.error(e);
                }
            }
        });
        findClassButton.setEnabled(!isReadOnly);
    }

    Composite libsControlGroup = new Composite(libsGroup, SWT.TOP);
    libsControlGroup.setLayout(new GridLayout(1, true));
    libsControlGroup.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING));

    UIUtils.createToolButton(libsControlGroup, CoreMessages.dialog_edit_driver_button_add_file,
            new SelectionAdapter() {
                @Override
                public void widgetSelected(SelectionEvent e) {
                    FileDialog fd = new FileDialog(getShell(), SWT.OPEN | SWT.MULTI);
                    fd.setText(CoreMessages.dialog_edit_driver_dialog_open_driver_library);
                    fd.setFilterPath(curFolder);
                    String[] filterExt = { "*.jar;*.zip", "*.dll;*.so", "*.*", "*" }; //$NON-NLS-1$ //$NON-NLS-2$
                    fd.setFilterExtensions(filterExt);
                    String selected = fd.open();
                    if (selected != null) {
                        curFolder = fd.getFilterPath();
                        String[] fileNames = fd.getFileNames();
                        if (!ArrayUtils.isEmpty(fileNames)) {
                            File folderFile = new File(curFolder);
                            for (String fileName : fileNames) {
                                driver.addDriverLibrary(DriverLibraryAbstract.createFromPath(driver,
                                        fileName.endsWith(".jar") || fileName.endsWith(".zip")
                                                ? DBPDriverLibrary.FileType.jar
                                                : DBPDriverLibrary.FileType.lib,
                                        new File(folderFile, fileName).getAbsolutePath(), null));
                            }
                            changeLibContent();
                        }
                    }
                }
            });

    UIUtils.createToolButton(libsControlGroup, CoreMessages.dialog_edit_driver_button_add_folder,
            new SelectionAdapter() {
                @Override
                public void widgetSelected(SelectionEvent e) {
                    DirectoryDialog fd = new DirectoryDialog(getShell(), SWT.MULTI);
                    fd.setText(CoreMessages.dialog_edit_driver_dialog_open_driver_directory);
                    fd.setFilterPath(curFolder);
                    String selected = fd.open();
                    if (selected != null) {
                        curFolder = fd.getFilterPath();
                        driver.addDriverLibrary(DriverLibraryAbstract.createFromPath(driver,
                                DBPDriverLibrary.FileType.jar, selected, null));
                        changeLibContent();
                    }
                }
            });

    UIUtils.createToolButton(libsControlGroup, CoreMessages.dialog_edit_driver_button_add_artifact,
            new SelectionAdapter() {
                @Override
                public void widgetSelected(SelectionEvent e) {
                    EditMavenArtifactDialog fd = new EditMavenArtifactDialog(getShell(), null);
                    if (fd.open() == IDialogConstants.OK_ID) {
                        driver.addDriverLibrary(DriverLibraryAbstract.createFromPath(driver,
                                DBPDriverLibrary.FileType.jar,
                                DriverLibraryMavenArtifact.PATH_PREFIX + fd.getArtifact().getPath(), null));
                        changeLibContent();
                    }
                }
            });

    updateVersionButton = UIUtils.createToolButton(libsControlGroup,
            CoreMessages.dialog_edit_driver_button_update_version, new SelectionAdapter() {
                @Override
                public void widgetSelected(SelectionEvent e) {
                    driver.updateFiles();
                    changeLibContent();
                }
            });

    detailsButton = UIUtils.createToolButton(libsControlGroup, CoreMessages.dialog_edit_driver_button_details,
            new SelectionAdapter() {
                @Override
                public void widgetSelected(SelectionEvent e) {
                    new DriverLibraryDetailsDialog(getShell(), driver, getSelectedLibrary()).open();
                }
            });
    detailsButton.setEnabled(false);
    deleteButton = UIUtils.createToolButton(libsControlGroup, CoreMessages.dialog_edit_driver_button_delete,
            new SelectionAdapter() {
                @Override
                public void widgetSelected(SelectionEvent e) {
                    IStructuredSelection selection = (IStructuredSelection) libTable.getSelection();
                    if (selection != null && !selection.isEmpty()) {
                        if (UIUtils.confirmAction(getShell(), "Delete library",
                                "Are you sure you want to delete selected libraries?")) {
                            for (Object obj : selection.toArray()) {
                                if (obj instanceof DriverLibraryAbstract) {
                                    driver.removeDriverLibrary((DriverLibraryAbstract) obj);
                                }
                            }
                        }
                    }
                    changeLibContent();
                }
            });
    deleteButton.setEnabled(false);

    /*
            upButton = UIUtils.createToolButton(libsControlGroup, CoreMessages.dialog_edit_driver_button_up, new SelectionAdapter() {
    @Override
    public void widgetSelected(SelectionEvent e)
    {
        DriverLibraryAbstract selectedLib = getSelectedLibrary();
        int selIndex = libList.indexOf(selectedLib);
        Collections.swap(libList, selIndex, selIndex - 1);
        changeLibContent();
        changeLibSelection();
    }
            });
            upButton.setEnabled(false);
            
            downButton = UIUtils.createToolButton(libsControlGroup, CoreMessages.dialog_edit_driver_button_down, new SelectionAdapter() {
    @Override
    public void widgetSelected(SelectionEvent e)
    {
        DriverLibraryAbstract selectedLib = getSelectedLibrary();
        int selIndex = libList.indexOf(selectedLib);
        Collections.swap(libList, selIndex, selIndex + 1);
        changeLibContent();
        changeLibSelection();
    }
            });
            downButton.setEnabled(false);
    */

    UIUtils.createHorizontalLine(libsControlGroup);

    UIUtils.createToolButton(libsControlGroup, CoreMessages.dialog_edit_driver_button_classpath,
            new SelectionAdapter() {
                @Override
                public void widgetSelected(SelectionEvent e) {
                    ViewClasspathDialog cpDialog = new ViewClasspathDialog(getShell());
                    cpDialog.open();
                }
            });

    changeLibContent();

    TabItem libsTab = new TabItem(group, SWT.NONE);
    libsTab.setText(CoreMessages.dialog_edit_driver_tab_name_driver_libraries);
    libsTab.setToolTipText(CoreMessages.dialog_edit_driver_tab_tooltip_driver_libraries);
    libsTab.setControl(libsGroup);
}