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

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

Introduction

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

Prototype

ITableLabelProvider

Source Link

Usage

From source file:org.eclipse.ui.tests.statushandlers.StatusDialogManagerTest.java

License:Open Source License

public void testNonNullLabelProvider() {
    try {// ww w .  j  a  v  a  2 s.  co  m
        final boolean[] called = new boolean[] { false };
        wsdm.setStatusListLabelProvider(new ITableLabelProvider() {

            public Image getColumnImage(Object element, int columnIndex) {
                return null;
            }

            public String getColumnText(Object element, int columnIndex) {
                called[0] = true;
                return "";
            }

            public void addListener(ILabelProviderListener listener) {

            }

            public void dispose() {

            }

            public boolean isLabelProperty(Object element, String property) {
                return false;
            }

            public void removeListener(ILabelProviderListener listener) {

            }

        });
        wsdm.addStatusAdapter(createStatusAdapter(MESSAGE_1), true);
        assertTrue(called[0]);
    } catch (Exception e) {
        fail();
    }
}

From source file:org.eclipse.ui.views.markers.internal.MarkerResolutionDialog.java

License:Open Source License

/**
 * Create the table for the markers//*from w w  w .  jav a2 s  .  co  m*/
 * 
 * @param control
 */
private void createMarkerTable(Composite control) {
    markersTable = CheckboxTableViewer.newCheckList(control, SWT.BORDER | SWT.V_SCROLL);

    createTableColumns();

    markersTable.setContentProvider(new IStructuredContentProvider() {
        /*
         * (non-Javadoc)
         * 
         * @see org.eclipse.jface.viewers.IContentProvider#dispose()
         */
        public void dispose() {

        }

        /*
         * (non-Javadoc)
         * 
         * @see org.eclipse.jface.viewers.IStructuredContentProvider#getElements(java.lang.Object)
         */
        public Object[] getElements(Object inputElement) {
            IMarkerResolution selected = getSelectedResolution();
            if (selected == null) {
                return new Object[0];
            }

            if (markerMap.containsKey(selected)) {
                return ((Collection) markerMap.get(selected)).toArray();
            }
            return new IMarker[] { originalMarker };
        }

        /*
         * (non-Javadoc)
         * 
         * @see org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse.jface.viewers.Viewer,
         *      java.lang.Object, java.lang.Object)
         */
        public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {

        }
    });

    markersTable.setLabelProvider(new ITableLabelProvider() {

        /*
         * (non-Javadoc)
         * 
         * @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnImage(java.lang.Object,
         *      int)
         */
        public Image getColumnImage(Object element, int columnIndex) {
            if (columnIndex == 0)
                return Util.getImage(((IMarker) element).getAttribute(IMarker.SEVERITY, -1));
            return null;
        }

        /*
         * (non-Javadoc)
         * 
         * @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnText(java.lang.Object,
         *      int)
         */
        public String getColumnText(Object element, int columnIndex) {
            if (columnIndex == 0)
                return Util.getResourceName((IMarker) element);
            int line = ((IMarker) element).getAttribute(IMarker.LINE_NUMBER, -1);
            if (line < 0) {
                return MarkerMessages.Unknown;
            }
            return NLS.bind(MarkerMessages.label_lineNumber, Integer.toString(line));
        }

        /*
         * (non-Javadoc)
         * 
         * @see org.eclipse.jface.viewers.IBaseLabelProvider#addListener(org.eclipse.jface.viewers.ILabelProviderListener)
         */
        public void addListener(ILabelProviderListener listener) {
            // do nothing

        }

        /*
         * (non-Javadoc)
         * 
         * @see org.eclipse.jface.viewers.IBaseLabelProvider#dispose()
         */
        public void dispose() {
            // do nothing

        }

        /*
         * (non-Javadoc)
         * 
         * @see org.eclipse.jface.viewers.IBaseLabelProvider#isLabelProperty(java.lang.Object,
         *      java.lang.String)
         */
        public boolean isLabelProperty(Object element, String property) {
            return false;
        }

        /*
         * (non-Javadoc)
         * 
         * @see org.eclipse.jface.viewers.IBaseLabelProvider#removeListener(org.eclipse.jface.viewers.ILabelProviderListener)
         */
        public void removeListener(ILabelProviderListener listener) {
            // do nothing

        }
    });

    markersTable.addCheckStateListener(new ICheckStateListener() {
        /*
         * (non-Javadoc)
         * 
         * @see org.eclipse.jface.viewers.ICheckStateListener#checkStateChanged(org.eclipse.jface.viewers.CheckStateChangedEvent)
         */
        public void checkStateChanged(CheckStateChangedEvent event) {
            if (event.getChecked() == true) {
                setComplete(true);
            } else {
                setComplete(markersTable.getCheckedElements().length > 0);
            }

        }
    });

    markersTable.setInput(this);
    markersTable.setAllChecked(true);
}

From source file:org.eclipse.worldcupforecast.parts.impl.WorldCupForecastPlayersRatingPropertiesEditionPartImpl.java

License:Open Source License

/**
 * @param container//from   w  w w. jav  a 2  s . c  o m
 * 
 */
protected void createRatingTableComposition(Composite container) {
    Composite tableContainer = new Composite(container, SWT.NONE);
    GridLayout tableContainerLayout = new GridLayout();
    GridData tableContainerData = new GridData(GridData.FILL_BOTH);
    tableContainerData.horizontalSpan = 3;
    tableContainer.setLayoutData(tableContainerData);
    tableContainerLayout.numColumns = 2;
    tableContainer.setLayout(tableContainerLayout);
    org.eclipse.swt.widgets.Table tableRating = new org.eclipse.swt.widgets.Table(tableContainer,
            SWT.FULL_SELECTION);
    tableRating.setHeaderVisible(true);
    GridData gdRating = new GridData();
    gdRating.grabExcessHorizontalSpace = true;
    gdRating.horizontalAlignment = GridData.FILL;
    gdRating.grabExcessVerticalSpace = true;
    gdRating.verticalAlignment = GridData.FILL;
    tableRating.setLayoutData(gdRating);
    tableRating.setLinesVisible(true);

    // Start of user code for columns definition for Rating
    TableColumn name = new TableColumn(tableRating, SWT.NONE);
    name.setWidth(80);
    name.setText("Label"); //$NON-NLS-1$      
    // End of user code

    rating = new TableViewer(tableRating);
    rating.setContentProvider(new ArrayContentProvider());
    rating.setLabelProvider(new ITableLabelProvider() {
        //Start of user code for label provider definition for Rating
        public String getColumnText(Object object, int columnIndex) {
            AdapterFactoryLabelProvider labelProvider = new AdapterFactoryLabelProvider(adapterFactory);
            if (object instanceof EObject) {
                switch (columnIndex) {
                case 0:
                    return labelProvider.getText(object);
                }
            }
            return ""; //$NON-NLS-1$
        }

        public Image getColumnImage(Object element, int columnIndex) {
            return null;
        }

        //End of user code

        public void addListener(ILabelProviderListener listener) {
        }

        public void dispose() {
        }

        public boolean isLabelProperty(Object element, String property) {
            return false;
        }

        public void removeListener(ILabelProviderListener listener) {
        }

    });
    rating.getTable().addListener(SWT.MouseDoubleClick, new Listener() {

        public void handleEvent(Event event) {
            editRating();
        }

    });
    GridData ratingData = new GridData(GridData.FILL_HORIZONTAL);
    ratingData.minimumHeight = 120;
    ratingData.heightHint = 120;
    rating.getTable().setLayoutData(ratingData);
    createRatingPanel(tableContainer);
}

From source file:org.eclipse.worldcupforecast.parts.impl.WorldCupGroupPropertiesEditionPartImpl.java

License:Open Source License

/**
 * @param container//from   ww w.  j  a  v  a2 s. c o m
 * 
 */
protected void createTeamsTableComposition(Composite container) {
    Composite tableContainer = new Composite(container, SWT.NONE);
    GridLayout tableContainerLayout = new GridLayout();
    GridData tableContainerData = new GridData(GridData.FILL_BOTH);
    tableContainerData.horizontalSpan = 3;
    tableContainer.setLayoutData(tableContainerData);
    tableContainerLayout.numColumns = 2;
    tableContainer.setLayout(tableContainerLayout);
    org.eclipse.swt.widgets.Table tableTeams = new org.eclipse.swt.widgets.Table(tableContainer,
            SWT.FULL_SELECTION);
    tableTeams.setHeaderVisible(true);
    GridData gdTeams = new GridData();
    gdTeams.grabExcessHorizontalSpace = true;
    gdTeams.horizontalAlignment = GridData.FILL;
    gdTeams.grabExcessVerticalSpace = true;
    gdTeams.verticalAlignment = GridData.FILL;
    tableTeams.setLayoutData(gdTeams);
    tableTeams.setLinesVisible(true);

    // Start of user code for columns definition for Teams
    TableColumn name = new TableColumn(tableTeams, SWT.NONE);
    name.setWidth(80);
    name.setText("Label"); //$NON-NLS-1$      
    // End of user code

    teams = new TableViewer(tableTeams);
    teams.setContentProvider(new ArrayContentProvider());
    teams.setLabelProvider(new ITableLabelProvider() {
        //Start of user code for label provider definition for Teams
        public String getColumnText(Object object, int columnIndex) {
            AdapterFactoryLabelProvider labelProvider = new AdapterFactoryLabelProvider(adapterFactory);
            if (object instanceof EObject) {
                switch (columnIndex) {
                case 0:
                    return labelProvider.getText(object);
                }
            }
            return ""; //$NON-NLS-1$
        }

        public Image getColumnImage(Object element, int columnIndex) {
            return null;
        }

        //End of user code

        public void addListener(ILabelProviderListener listener) {
        }

        public void dispose() {
        }

        public boolean isLabelProperty(Object element, String property) {
            return false;
        }

        public void removeListener(ILabelProviderListener listener) {
        }

    });
    teams.getTable().addListener(SWT.MouseDoubleClick, new Listener() {

        public void handleEvent(Event event) {
            editTeams();
        }

    });
    GridData teamsData = new GridData(GridData.FILL_HORIZONTAL);
    teamsData.minimumHeight = 120;
    teamsData.heightHint = 120;
    teams.getTable().setLayoutData(teamsData);
    createTeamsPanel(tableContainer);
}

From source file:org.eclipse.wst.common.snippets.internal.ui.SnippetVariableTableViewer.java

License:Open Source License

public Control createContents(Composite parent) {
    // pity we can't just use a PropertySheetPage, but the column headers
    // aren't customizable
    fTableViewer = new TableViewer(new Table(parent, SWT.FULL_SELECTION | SWT.SINGLE | SWT.BORDER));

    // GridData data = new GridData(GridData.FILL_BOTH);
    // fTableViewer.getTable().setLayoutData(data);

    fTableViewer.getTable().setHeaderVisible(true);
    fTableViewer.getTable().setLinesVisible(true);

    fTableViewer.addSelectionChangedListener(new ISelectionChangedListener() {
        public void selectionChanged(SelectionChangedEvent event) {
            ISelection sel = event.getSelection();
            if (sel != null && !sel.isEmpty() && sel instanceof IStructuredSelection)
                fSelection = (ISnippetVariable) ((IStructuredSelection) sel).getFirstElement();
            else//from  w  w w.  j  a  v  a  2 s  .co m
                fSelection = null;
            fireSelectionChanged(event);
        }
    });

    fTableViewer.setContentProvider(new ArrayContentProvider());

    fTableViewer.setLabelProvider(new ITableLabelProvider() {

        public void addListener(ILabelProviderListener listener) {
        }

        public void dispose() {
        }

        public Image getColumnImage(Object element, int columnIndex) {
            return null;
        }

        public String getColumnText(Object element, int columnIndex) {
            if (element == null)
                return null;
            SnippetVariable var = (SnippetVariable) element;
            if (columnIndex == 0)
                return var.getId();
            else if (columnIndex == 1)
                return (String) fValues.get(var.getId());
            return ""; //$NON-NLS-1$
        }

        public boolean isLabelProperty(Object element, String property) {
            return false;
        }

        public void removeListener(ILabelProviderListener listener) {
        }
    });

    TableLayout tlayout = new TableLayout();
    tlayout.addColumnData(new ColumnWeightData(35, true));
    tlayout.addColumnData(new ColumnWeightData(65, true));
    fTableViewer.getTable().setLayout(tlayout); // Create the Host column
    TableColumn tc1 = new TableColumn(fTableViewer.getTable(), SWT.NONE);
    tc1.setText("Variable ID"); //$NON-NLS-1$
    tc1.setResizable(true);
    tc1.setWidth(40);
    TableColumn tc2 = new TableColumn(fTableViewer.getTable(), SWT.NONE);
    tc2.setText("Value"); //$NON-NLS-1$
    tc2.setResizable(true);
    tc2.setWidth(40);

    fTableViewer.setCellEditors(new CellEditor[] { new TextCellEditor(fTableViewer.getTable()),
            new TextCellEditor(fTableViewer.getTable()) });

    fTableViewer.setColumnProperties(new String[] { "id", "value" }); //$NON-NLS-1$ //$NON-NLS-2$
    ICellModifier cellmodifier = new ICellModifier() {
        public boolean canModify(Object element, String property) {
            return property.equals("value"); //$NON-NLS-1$
        }

        public Object getValue(Object element, String property) {
            if (property.equals("id")) //$NON-NLS-1$
                return ((SnippetVariable) element).getId();
            else if (property.equals("value")) //$NON-NLS-1$
                return fValues.get(((SnippetVariable) element).getId());
            return ""; //$NON-NLS-1$
        }

        public void modify(Object element, String property, Object value) {
            TableItem item = (TableItem) element;
            SnippetVariable var = (SnippetVariable) item.getData();
            if (property.equals("value")) { //$NON-NLS-1$
                String oldValue = (String) fValues.get(var.getId());
                fValues.put(var.getId(), value);
                item.setText(1, (String) value);
                fireValueChanged(new String(var.getId()), property, oldValue, new String((String) value));
            }
        }
    };
    fTableViewer.setCellModifier(cellmodifier);
    fTableViewer.setInput(getLibraryVariables());
    refresh();
    return getControl();
}

From source file:org.eclipselabs.changelog.ChangeLogView.java

License:Open Source License

protected TreeViewer createDatesTree(Composite parent) {
    final Tree tree = new Tree(parent, SWT.MULTI | SWT.FULL_SELECTION | SWT.H_SCROLL | SWT.V_SCROLL);
    tree.setHeaderVisible(true);/*w w  w  . ja  va2s  .  c o m*/
    tree.setLinesVisible(true);
    GridData data = new GridData(GridData.FILL_BOTH);
    tree.setLayoutData(data);
    TableLayout layout = new TableLayout();
    tree.setLayout(layout);
    TreeViewer ret = new TreeViewer(tree);
    ret.setContentProvider(new ITreeContentProvider() {

        public Object[] getChildren(Object parentElement) {
            return null;
        }

        public Object getParent(Object element) {
            return null;
        }

        public boolean hasChildren(Object element) {
            return false;
        }

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

        public void dispose() {
        }

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

    });
    ret.setLabelProvider(new ITableLabelProvider() {

        private final DateFormat format = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT);

        public Image getColumnImage(Object element, int columnIndex) {
            if (columnIndex == 0) {
                return CVSChangeLogPlugin.getDefault().getImageRegistry()
                        .get(CVSChangeLogPlugin.IMG_OBJ_DATE_TABLE);
            }
            return null;
        }

        public String getColumnText(Object element, int columnIndex) {
            ChangeLogEntry entry = (ChangeLogEntry) element;
            switch (columnIndex) {
            case 0:
                return format.format(entry.getDate());
            case 1:
                return entry.getAuthor();
            case 2:
                String msg = entry.getComment();
                msg = msg.replace('\n', ' ');
                msg = msg.replace('\r', ' ');
                return msg;
            }
            return "";
        }

        public void addListener(ILabelProviderListener listener) {
        }

        public void dispose() {
        }

        public boolean isLabelProperty(Object element, String property) {
            return true;
        }

        public void removeListener(ILabelProviderListener listener) {
        }
    });

    // creation date
    TreeColumn col = new TreeColumn(tree, SWT.NONE);
    col.setResizable(true);
    col.setText("Date");
    layout.addColumnData(new ColumnPixelData(150, true));
    col.addSelectionListener(getColumnSelectionListener(ret, 0));

    // author
    col = new TreeColumn(tree, SWT.NONE);
    col.setResizable(true);
    col.setText("Author");
    layout.addColumnData(new ColumnPixelData(120, true));
    col.addSelectionListener(getColumnSelectionListener(ret, 1));

    //comment
    col = new TreeColumn(tree, SWT.NONE);
    col.setResizable(true);
    col.setText("Comment");
    layout.addColumnData(new ColumnPixelData(500, true));
    col.addSelectionListener(getColumnSelectionListener(ret, 2));

    ret.addSelectionChangedListener(new ISelectionChangedListener() {

        public void selectionChanged(SelectionChangedEvent event) {
            updateSelection(event.getSelection());
        }
    });

    ret.setSorter(new ChangeLogEntrySorter());
    setSort(ret, 0);
    setSort(ret, 0);

    String filter = CVSChangeLogPlugin.getDefault().getPreferenceStore().getString(PREFERENCE_FILTER);
    if (filter != null && filter.length() > 0) {
        ret.addFilter(new ChangeLogFilter(filter));
    }

    return ret;
}

From source file:org.eclipselabs.changelog.ChangeLogView.java

License:Open Source License

protected TreeViewer createFilesTree(Composite parent) {
    final Tree tree = new Tree(parent, SWT.MULTI | SWT.FULL_SELECTION | SWT.H_SCROLL | SWT.V_SCROLL);
    tree.setHeaderVisible(true);/*w  ww  . ja  v a 2s .  co m*/
    tree.setLinesVisible(true);
    GridData data = new GridData(GridData.FILL_BOTH);
    tree.setLayoutData(data);
    TableLayout layout = new TableLayout();
    tree.setLayout(layout);
    TreeViewer ret = new TreeViewer(tree);
    ret.setContentProvider(new ITreeContentProvider() {

        public Object[] getChildren(Object parentElement) {
            return null;
        }

        public Object getParent(Object element) {
            return null;
        }

        public boolean hasChildren(Object element) {
            return false;
        }

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

        public void dispose() {
        }

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

    });
    ret.setLabelProvider(new ITableLabelProvider() {

        private final Map<ImageDescriptor, Image> imageCache = new HashMap<ImageDescriptor, Image>();

        public Image getColumnImage(Object element, int columnIndex) {
            FileEntry entry = (FileEntry) element;
            switch (columnIndex) {
            case 0:
                ImageDescriptor imageDesc = WorkbenchPlugin.getDefault().getEditorRegistry()
                        .getImageDescriptor(entry.getReposFile());
                Image image = imageCache.get(imageDesc);
                if (image == null) {
                    image = imageDesc.createImage();
                    imageCache.put(imageDesc, image);
                }
                return image;
            case 2:
                if (entry.getPreviousRevision().length() == 0) {
                    break;
                }
                //$FALL-THROUGH$
            case 1:
                return CVSChangeLogPlugin.getDefault().getImageRegistry()
                        .get(CVSChangeLogPlugin.IMG_OBJ_REMOTE_REVISION_TABLE);
            }
            return null;
        }

        public String getColumnText(Object element, int columnIndex) {
            FileEntry entry = (FileEntry) element;
            switch (columnIndex) {
            case 0:

                String filePath;
                switch (fileDisplayMode) {
                case ChangeLogPreferences.OPT_PROJECT_RELATIVE_PATH:
                    filePath = entry.getResource().getFullPath().toString().substring(1);
                    break;
                case ChangeLogPreferences.OPT_CVS_FULL_PATH:
                    filePath = entry.getReposFile();
                    break;
                case ChangeLogPreferences.OPT_FILE_NAME:
                    filePath = entry.getResource().getFullPath().lastSegment().toString();
                    break;
                default:
                    throw new IllegalStateException("Invalid display option: " + fileDisplayMode);
                }

                return filePath;
            case 1:
                return entry.getRevision();
            case 2:
                return entry.getPreviousRevision();
            }
            return "";
        }

        public void addListener(ILabelProviderListener listener) {
        }

        public void dispose() {
            for (Image image : imageCache.values()) {
                image.dispose();
            }
        }

        public boolean isLabelProperty(Object element, String property) {
            return true;
        }

        public void removeListener(ILabelProviderListener listener) {
        }
    });

    ret.addSelectionChangedListener(new ISelectionChangedListener() {

        public void selectionChanged(SelectionChangedEvent event) {
            compareMenu.setEnabled(!event.getSelection().isEmpty());
            openMenu.setEnabled(!event.getSelection().isEmpty());
            copyMenu.setEnabled(!event.getSelection().isEmpty());
        }
    });

    ret.addOpenListener(new IOpenListener() {

        public void open(OpenEvent event) {
            FileEntry entry = (FileEntry) ((IStructuredSelection) event.getSelection()).getFirstElement();
            if (entry.getPreviousRevision().length() == 0) {
                openFileInEditor(entry);
            } else {
                openFileInCompare(entry);
            }
        }
    });

    // file
    TreeColumn col = new TreeColumn(tree, SWT.NONE);
    col.setResizable(true);
    col.setText("File");
    col.addSelectionListener(getColumnSelectionListener(ret, 0));
    layout.addColumnData(new ColumnPixelData(450, true));

    // revision
    col = new TreeColumn(tree, SWT.NONE);
    col.setResizable(true);
    col.setText("Revision");
    col.addSelectionListener(getColumnSelectionListener(ret, 1));
    layout.addColumnData(new ColumnPixelData(80, true));

    // old revision
    col = new TreeColumn(tree, SWT.NONE);
    col.setResizable(true);
    col.setText("Previous Revision");
    col.addSelectionListener(getColumnSelectionListener(ret, 2));
    layout.addColumnData(new ColumnPixelData(80, true));

    ret.setSorter(new FilesSorter());
    setSort(ret, 0);

    return ret;
}

From source file:org.gw4e.eclipse.property.table.StringCustomListModel.java

License:Open Source License

@Override
protected ITableLabelProvider getLabelProvider() {
    return new ITableLabelProvider() {

        @Override//from www .  j a v a  2  s. c  o  m
        public void addListener(ILabelProviderListener arg0) {

        }

        @Override
        public void dispose() {
        }

        @Override
        public boolean isLabelProperty(Object arg0, String arg1) {
            return false;
        }

        @Override
        public void removeListener(ILabelProviderListener arg0) {

        }

        @Override
        public Image getColumnImage(Object arg0, int arg1) {
            return null;
        }

        @Override
        public String getColumnText(Object arg0, int arg1) {
            String ret = (String) arg0;
            return ret;
        }

    };
}

From source file:org.hibernate.eclipse.console.views.QueryParametersPage.java

License:Open Source License

/**
 * This method initializes queryParametersTable
 *
 *//*from w ww .ja v  a  2s .  c o m*/
private void createQueryParametersTable() {
    GridData gridData = new org.eclipse.swt.layout.GridData();
    gridData.horizontalAlignment = org.eclipse.swt.layout.GridData.FILL;
    gridData.grabExcessVerticalSpace = true;
    gridData.grabExcessHorizontalSpace = true;
    gridData.verticalAlignment = org.eclipse.swt.layout.GridData.FILL;
    queryParametersTable = new Table(top, SWT.FULL_SELECTION);
    queryParametersTable.setHeaderVisible(true);
    queryParametersTable.setLayoutData(gridData);
    queryParametersTable.setLinesVisible(true);
    TableColumn nameColumn = new TableColumn(queryParametersTable, SWT.NONE);
    nameColumn.setWidth(100);
    nameColumn.setText(HibernateConsoleMessages.QueryParametersPage_name);
    TableColumn typeColumn = new TableColumn(queryParametersTable, SWT.NONE);
    typeColumn.setWidth(75);
    typeColumn.setText(HibernateConsoleMessages.QueryParametersPage_type);
    TableColumn valueColumn = new TableColumn(queryParametersTable, SWT.NONE);
    valueColumn.setWidth(100);
    valueColumn.setText(HibernateConsoleMessages.QueryParametersPage_value);
    TableColumn nullColumn = new TableColumn(queryParametersTable, SWT.NONE);
    nullColumn.setWidth(32);
    nullColumn.setText(HibernateConsoleMessages.QueryParametersPage_null);

    tableViewer = new TableViewer(queryParametersTable);

    tableViewer.addSelectionChangedListener(new ISelectionChangedListener() {

        public void selectionChanged(SelectionChangedEvent event) {
            if (statusLabel != null) {
                Object firstElement = ((IStructuredSelection) tableViewer.getSelection()).getFirstElement();
                if (firstElement instanceof ConsoleQueryParameter) {
                    statusLabel.setText(HibernateConsoleMessages.QueryParametersPage_format
                            + ((ConsoleQueryParameter) firstElement).getDefaultFormat());
                } else {
                    statusLabel.setText(""); //$NON-NLS-1$
                }
            }

        }

    });
    final List<IType> possibleTypes = new ArrayList<IType>(
            model.getService().newTypeFactory().getTypeFormats().keySet());
    Collections.sort(possibleTypes, new Comparator<IType>() {

        public int compare(IType t1, IType t2) {
            return t1.getName().compareTo(t2.getName());
        }

    });

    tableViewer.setCellModifier(new ICellModifier() {

        public void modify(Object element, String property, Object value) {
            TableItem item = (TableItem) element;
            ConsoleQueryParameter cqp = (ConsoleQueryParameter) item.getData();
            if (NAME_PROPERTY.equals(property)) {
                cqp.setName((String) value);
            }
            if (TYPE_PROPERTY.equals(property)) {
                Iterator<IType> iterator = possibleTypes.iterator();
                int i = 0;
                while (iterator.hasNext()) {
                    IType type = iterator.next();
                    if (i == ((Integer) value).intValue()) {
                        if (!cqp.getTypeName().equals(type.getName())) {
                            cqp.setType(type);
                            cqp.setNull(); // have to reset to ensure it's working
                        }
                        break;
                    }
                    i++;
                }
            }
            if (VALUE_PROPERTY.equals(property)) {
                String[] inputStrings;
                if (value instanceof String[]) {
                    inputStrings = (String[]) value;
                } else {
                    inputStrings = new String[] { (String) value };
                }
                Object[] values = new Object[inputStrings.length];
                for (int i = 0; i < inputStrings.length; i++) {
                    values[i] = cqp.convertStringToValue(inputStrings[i]);
                }
                if (values.length > 1) {
                    cqp.setValue(values);
                } else if (values.length == 1) {
                    cqp.setValue(values[0]);
                } else {
                    cqp.setValue(null);
                }
            }
            if (NULL_PROPERTY.equals(property)) {
                if (cqp.isNull()) {
                    cqp.setValue(cqp.convertStringToValue("")); // best attempt to "unnull" //$NON-NLS-1$
                } else {
                    cqp.setNull();
                }
            }
            tableViewer.refresh(cqp);
        }

        public Object getValue(Object element, String property) {
            ConsoleQueryParameter cqp = (ConsoleQueryParameter) element;
            if (NAME_PROPERTY.equals(property)) {
                return cqp.getName();
            }
            if (TYPE_PROPERTY.equals(property)) {
                Iterator<IType> iterator = possibleTypes.iterator();
                String type = cqp.getTypeName();
                int i = 0;
                while (iterator.hasNext()) {
                    if (type.equals(iterator.next().getName())) {
                        return Integer.valueOf(i);
                    }
                    i++;
                }
            }
            if (VALUE_PROPERTY.equals(property)) {
                return cqp.getStringValues();
            }
            if (NULL_PROPERTY.equals(property)) {
                return Boolean.valueOf(cqp.isNull());
            }
            return null;
        }

        public boolean canModify(Object element, String property) {
            return true;
        }
    });

    tableViewer.setContentProvider(new IStructuredContentProvider() {
        public Object[] getElements(Object inputElement) {
            return ((QueryInputModel) inputElement).getQueryParameters();
        }

        public void dispose() {
        }

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

    String[] columnProperties = new String[] { NAME_PROPERTY, TYPE_PROPERTY, VALUE_PROPERTY, NULL_PROPERTY };
    tableViewer.setColumnProperties(columnProperties);

    String[] valueTypes = new String[possibleTypes.size()];

    Iterator<IType> iterator = possibleTypes.iterator();
    int i = 0;
    while (iterator.hasNext()) {
        IType element = iterator.next();
        valueTypes[i++] = element.getName();
    }
    CellEditor[] editors = new CellEditor[columnProperties.length];
    editors[0] = new TextCellEditor(queryParametersTable);
    editors[1] = new ComboBoxCellEditor(queryParametersTable, valueTypes, SWT.READ_ONLY);
    editors[2] = new StringArrayDialogCellEditor(queryParametersTable) {

        private Button b;

        public void activate() {
            Object param = ((IStructuredSelection) tableViewer.getSelection()).getFirstElement();
            if (param instanceof ConsoleQueryParameter) {
                try {
                    Integer.parseInt(((ConsoleQueryParameter) param).getName());
                    // "ordered" parameter doesn't allow list value
                    // see also HQLQueryPage#setupParameters()
                    b.setVisible(false);
                } catch (NumberFormatException nfe) {
                    // "named" parameter allows parameter list value
                    b.setVisible(true);
                }
            }
        };

        protected org.eclipse.swt.widgets.Button createButton(Composite parent) {
            return b = super.createButton(parent);
        };

    };

    editors[3] = new CheckboxCellEditor(queryParametersTable);

    tableViewer.setCellEditors(editors);

    tableViewer.setLabelProvider(new ITableLabelProvider() {

        public void removeListener(ILabelProviderListener listener) {
        }

        public boolean isLabelProperty(Object element, String property) {
            return true;
        }

        public void dispose() {
        }

        public void addListener(ILabelProviderListener listener) {
        }

        public String getColumnText(Object element, int columnIndex) {
            ConsoleQueryParameter cqp = (ConsoleQueryParameter) element;

            switch (columnIndex) {
            case 0:
                return cqp.getName();
            case 1:
                return cqp.getTypeName();
            case 2: {
                String label = cqp.getStringValues()[0];
                for (int j = 1; j < cqp.getStringValues().length; j++) {
                    label += "|" + cqp.getStringValues()[j]; //$NON-NLS-1$
                }
                return label;
            }
            case 3:
                return null; //cqp.isNull()?"X":"";
            default:
                return null;
            }
        }

        public Image getColumnImage(Object element, int columnIndex) {
            if (columnIndex == 3) {
                ConsoleQueryParameter cqp = (ConsoleQueryParameter) element;
                return cqp.isNull() ? EclipseImages.getImage(ImageConstants.CHECKBOX_FULL)
                        : EclipseImages.getImage(ImageConstants.CHECKBOX_EMPTY);
            } else {
                return null;
            }
        }

    });

}

From source file:org.jboss.tools.common.model.ui.editors.dnd.composite.TagAttributesComposite.java

License:Open Source License

/**
 * //ww  w  . j av a  2  s.c  om
 * @param parent
 * @param style
 * @param wizardModel
 */
public TagAttributesComposite(Composite parent, int style, IDropWizardModel wizardModel, boolean filtered,
        final Properties context) {
    super(parent, style);
    this.context = context;
    fFiltered = filtered;
    fWizardModel = wizardModel;
    fWizardModel.addPropertyChangeListener(this);
    addDisposeListener(new DisposeListener() {
        public void widgetDisposed(DisposeEvent e) {
            fWizardModel.removePropertyChangeListener(TagAttributesComposite.this);
            if (context != null) {
                context.clear();
            }
            removeDisposeListener(this);
        }
    });
    AttributeDescriptorValueProvider valueProvider = fWizardModel.getDropData().getValueProvider();
    if (valueProvider != null) {
        valueProvider.initContext(context);
    }
    GridLayout layout = new GridLayout();
    layout.marginWidth = 0;
    layout.marginHeight = 0;
    layout.numColumns = 1;
    setLayout(layout);

    GridData data = new GridData(GridData.FILL_BOTH);
    setLayoutData(data);

    final Table swtTable = new Table(this,
            SWT.BORDER | SWT.FULL_SELECTION | SWT.V_SCROLL | SWT.H_SCROLL | SWT.SINGLE);
    data = new GridData(GridData.FILL_HORIZONTAL | GridData.FILL_VERTICAL);

    TableLayout tableLayout = new TableLayout();
    tableViewer = new TagAttributesTableViewer(swtTable);

    swtTable.setLayout(tableLayout);
    swtTable.setLayoutData(data);
    swtTable.setHeaderVisible(true);
    swtTable.setLinesVisible(true);

    tableLayout.addColumnData(new ColumnPixelData(150));
    TableColumn col = new TableColumn(swtTable, SWT.NONE);
    col.setText("Attribute name");

    tableLayout.addColumnData(new ColumnPixelData(250));
    col = new TableColumn(swtTable, SWT.NONE);
    col.setText("Value");

    tableViewer.setColumnProperties(new String[] { "Name", "Value" }); //$NON-NLS-1$ //$NON-NLS-2$
    tableViewer.setUseHashlookup(true);
    tableViewer.setComparer(new IElementComparer() {

        public boolean equals(Object a, Object b) {
            return a == b;
        }

        public int hashCode(Object element) {
            return element == null ? 0 : element.hashCode();
        }

    });

    tableViewer.setCellModifier(new ICellModifier() {

        public boolean canModify(Object element, String property) {
            return true;
        }

        public Object getValue(Object element, String property) {
            AttributeDescriptorValue attrDescr = (AttributeDescriptorValue) element;
            context.setProperty("attributeName", attrDescr.getName()); //$NON-NLS-1$
            String tagName = "" + fWizardModel.getTagProposal().getName(); //$NON-NLS-1$
            String prefix = fWizardModel.getTagProposal().getPrefix();
            if (prefix != null && prefix.length() > 0 && !tagName.startsWith(prefix + ":")) { //$NON-NLS-1$ //$NON-NLS-2$
                tagName = prefix + ":" + tagName; //$NON-NLS-1$
            }
            context.setProperty("nodeName", tagName); //$NON-NLS-1$
            ISelection s = fWizardModel.getDropData().getSelectionProvider().getSelection();
            if (s instanceof TextSelection) {
                int offset = ((TextSelection) s).getOffset();
                context.put("offset", new Integer(offset));
            }
            return attrDescr.getValue() == null ? "" : attrDescr.getValue(); //$NON-NLS-1$
        }

        public void modify(Object element, String property, Object value) {
            TableItem item = (TableItem) element;
            AttributeDescriptorValue attrDescr = (AttributeDescriptorValue) item.getData();
            fWizardModel.setAttributeValue(attrDescr, value);
            if (tableViewer != null) {
                tableViewer.refresh();
            }
        }
    });

    ExtendedCellEditorProvider provider = createCellEditorProvider();

    if (provider != null) {
        tableViewer.setCellEditors(new CellEditor[] { null, provider.createCellEditor(swtTable, context) });
    } else {
        tableViewer.setCellEditors(new CellEditor[] { null, new TextCellEditor(swtTable) });
    }

    tableViewer.getCellEditors()[1].addListener(new ICellEditorListener() {

        public void applyEditorValue() {
        }

        public void cancelEditor() {
        }

        public void editorValueChanged(boolean oldValidState, boolean newValidState) {
            // TODO Auto-generated method stub
            if (tableViewer.isCellEditorActive()) {
                IStructuredSelection selection = (IStructuredSelection) tableViewer.getSelection();
                AttributeDescriptorValue attrValue = (AttributeDescriptorValue) selection.getFirstElement();
                fWizardModel.setAttributeValue(attrValue, tableViewer.getCellEditors()[1].getValue());
            }
        }
    });
    tableViewer.setContentProvider(new IStructuredContentProvider() {

        public Object[] getElements(Object inputElement) {
            return filterElements();
        }

        private Object[] filterElements() {

            AttributeDescriptorValue[] value = fWizardModel.getAttributeValueDescriptors();
            if (!isFiltered())
                return value;
            List<AttributeDescriptorValue> filtered = new ArrayList<AttributeDescriptorValue>();
            for (int i = 0; i < value.length; i++) {
                AttributeDescriptorValue value2 = value[i];
                if (value2.isRequired() || value2.isPreferable()) {
                    filtered.add(value2);
                }
            }
            return filtered.toArray();
        }

        public void dispose() {
        }

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

    tableViewer.setLabelProvider(new ITableLabelProvider() {

        public static final int ATTRIBUTE_NAME_INDEX = 0;
        public static final int ATTRIBUTE_VALUE_INDEX = 1;

        public Image getColumnImage(Object element, int columnIndex) {
            return null;
        }

        public String getColumnText(Object element, int columnIndex) {
            AttributeDescriptorValue attrDescr = (AttributeDescriptorValue) element;
            switch (columnIndex) {
            case ATTRIBUTE_NAME_INDEX:
                if (attrDescr.isRequired()) {
                    return attrDescr.getName();
                } else if (attrDescr.isPreferable()) {
                    return attrDescr.getName();
                } else {
                    return attrDescr.getName();
                }

            case ATTRIBUTE_VALUE_INDEX:
                return attrDescr.getValue() == null ? "" : attrDescr.getValue().toString(); //$NON-NLS-1$
            }
            throw new IllegalArgumentException("Wrong column index for LabelProvider"); //$NON-NLS-1$
        }

        public void addListener(ILabelProviderListener listener) {
        }

        public void dispose() {
        }

        public boolean isLabelProperty(Object element, String property) {
            return false;
        }

        public void removeListener(ILabelProviderListener listener) {
        }
    });
    tableViewer.setInput(new Object());
}