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

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

Introduction

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

Prototype

public TableViewer(Composite parent, int style) 

Source Link

Document

Creates a table viewer on a newly-created table control under the given parent.

Usage

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

License:Open Source License

@SuppressWarnings("unused")
private void createWatchedFolderGroup(CTabFolder folder) {
    final Composite wfComp = createTabPage(folder, Messages.EditMetaDialog_watched_folders,
            Messages.EditMetaDialog_watchedFolders_tooltip, 1, 0);
    final Composite composite = new Composite(wfComp, SWT.NONE);
    composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
    composite.setLayout(new GridLayout(2, false));
    watchedFolderViewer = new TableViewer(composite,
            SWT.V_SCROLL | SWT.H_SCROLL | SWT.BORDER | SWT.SINGLE | SWT.FULL_SELECTION);
    setViewerLayout(watchedFolderViewer, 200, 1);
    watchedFolderViewer.getTable().setLinesVisible(true);
    watchedFolderViewer.getTable().setHeaderVisible(true);
    TableViewerColumn col0 = createColumn(Messages.EditMetaDialog_path, 240);
    col0.setLabelProvider(new ZColumnLabelProvider() {
        @Override//w  ww  .  j  a v  a2s . c  om
        public String getText(Object element) {
            if (element instanceof WatchedFolder) {
                String uri = ((WatchedFolder) element).getUri();
                try {
                    File file = new File(new URI(uri));
                    String path = file.getPath();
                    if (!path.endsWith(File.separator))
                        path += File.separator;
                    if (!file.exists())
                        path += Messages.EditMetaDialog_offline;
                    return path;
                } catch (URISyntaxException e) {
                    // ignore
                }
                return uri;
            }
            return null;
        }
    });
    TableViewerColumn col1 = createColumn(Messages.EditMetaDialog_volume, 80);
    col1.setLabelProvider(new ZColumnLabelProvider() {
        @Override
        public String getText(Object element) {
            if (element instanceof WatchedFolder) {
                String volume = ((WatchedFolder) element).getVolume();
                return volume == null ? "" : volume; //$NON-NLS-1$
            }
            return null;
        }
    });
    TableViewerColumn col2 = createColumn(Messages.EditMetaDialog_type, 60);
    col2.setLabelProvider(new ZColumnLabelProvider() {
        @Override
        public String getText(Object element) {
            if (element instanceof WatchedFolder) {
                return ((WatchedFolder) element).getTransfer() ? Messages.EditMetaDialog_transfer
                        : Messages.EditMetaDialog_storage;
            }
            return null;
        }
    });
    TableViewerColumn col3 = createColumn(Messages.EditMetaDialog_recursive, 80);
    col3.setLabelProvider(new ZColumnLabelProvider() {
        @Override
        public String getText(Object element) {
            if (element instanceof WatchedFolder)
                return ((WatchedFolder) element).getRecursive() ? Messages.EditMetaDialog_c_yes
                        : Messages.EditMetaDialog_c_no;
            return null;
        }
    });
    TableViewerColumn col4 = createColumn(Messages.EditMetaDialog_last_observation, 120);
    col4.setLabelProvider(new ZColumnLabelProvider() {
        @Override
        public String getText(Object element) {
            if (element instanceof WatchedFolder)
                return df.format(new Date(((WatchedFolder) element).getLastObservation()));
            return null;
        }
    });
    TableViewerColumn col5 = createColumn(Messages.EditMetaDialog_file_filter, 400);
    col5.setLabelProvider(new ZColumnLabelProvider() {
        @Override
        public String getText(Object element) {
            if (element instanceof WatchedFolder) {
                WatchedFolder wf = (WatchedFolder) element;
                if (!wf.getTransfer())
                    return UiUtilities.getFilters(wf);
                StringBuilder sb = new StringBuilder();
                int skipPolicy = wf.getSkipPolicy();
                if (skipPolicy < 0 && skipPolicy >= ImportFileSelectionPage.SKIPPOLICIES.length)
                    skipPolicy = 0;
                sb.append(ImportFileSelectionPage.SKIPPOLICIES[skipPolicy]);
                sb.append(" | ").append(wf.getTargetDir()); //$NON-NLS-1$
                return sb.toString();
            }
            return null;
        }
    });
    watchedFolderViewer.setContentProvider(ArrayContentProvider.getInstance());
    new SortColumnManager(watchedFolderViewer, new int[] { SWT.UP, SWT.UP, SWT.UP, SWT.NONE, SWT.UP, SWT.NONE },
            0);
    watchedFolderViewer.setComparator(new ZViewerComparator() {
        @Override
        public int compare(Viewer viewer, Object e1, Object e2) {
            Table table = watchedFolderViewer.getTable();
            TableColumn sortColumn = table.getSortColumn();
            if (sortColumn == table.getColumn(4)) {
                int sortDirection = table.getSortDirection();
                int a = (sortDirection & SWT.DOWN) != 0 ? 1 : -1;
                long t1 = ((WatchedFolder) e1).getLastObservation();
                long t2 = ((WatchedFolder) e2).getLastObservation();
                return t1 == t2 ? 0 : t1 < t2 ? a : -a;
            }
            return super.compare(viewer, e1, e2);
        }
    });
    watchedFolderViewer.getControl().addKeyListener(keyListener);
    watchedFolderViewer.addSelectionChangedListener(new ISelectionChangedListener() {
        public void selectionChanged(SelectionChangedEvent event) {
            updateFolderButtons();
            if (cntrlDwn) {
                if (editFolderButton.isEnabled())
                    editWatchedFolder();
                cntrlDwn = false;
            }
        }
    });
    watchedFolderViewer.addDoubleClickListener(new IDoubleClickListener() {
        public void doubleClick(DoubleClickEvent event) {
            if (!cntrlDwn && editFolderButton.isEnabled())
                editWatchedFolder();
        }
    });
    Composite buttonComp = new Composite(composite, SWT.NONE);
    buttonComp.setLayoutData(new GridData(SWT.BEGINNING, SWT.BEGINNING, false, true));
    buttonComp.setLayout(new GridLayout());
    addFolderButton = new Button(buttonComp, SWT.PUSH);
    addFolderButton.setText(Messages.EditMetaDialog_add);
    addFolderButton.setToolTipText(Messages.EditMetaDialog_add_watched_folder);
    addFolderButton.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            WatchedFolder folder = new WatchedFolderImpl(null, null, 0L, true, null, false, null, false, 0,
                    null, 2, null, null, Constants.FILESOURCE_DIGITAL_CAMERA, false);
            WatchedFolderWizard wizard = new WatchedFolderWizard(true);
            WizardDialog wizardDialog = new WizardDialog(getShell(), wizard);
            wizard.init(null, new StructuredSelection(folder));
            if (wizardDialog.open() == WizardDialog.OK) {
                try {
                    folder.setStringId(Utilities.computeWatchedFolderId(new File(new URI(folder.getUri())),
                            folder.getVolume()));
                    watchedFolders.add(folder);
                    watchedFolderViewer.setInput(watchedFolders);
                } catch (URISyntaxException e1) {
                    // should never happend
                }
            }
        }
    });
    editFolderButton = new Button(buttonComp, SWT.PUSH);
    editFolderButton.setText(Messages.EditMetaDialog_edit_watched);
    editFolderButton.setToolTipText(Messages.EditMetaDialog_edit_watched_tooltip);
    editFolderButton.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            editWatchedFolder();
        }
    });

    removeFolderButton = new Button(buttonComp, SWT.PUSH);
    removeFolderButton.setText(Messages.EditMetaDialog_remove);
    removeFolderButton.setToolTipText(Messages.EditMetaDialog_remove_watched_folder);
    removeFolderButton.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            WatchedFolderImpl firstElement = (WatchedFolderImpl) watchedFolderViewer.getStructuredSelection()
                    .getFirstElement();
            watchedFolders.remove(firstElement);
            watchedFolderViewer.remove(firstElement);
        }
    });
    categoryRemoveButton.setEnabled(!readonly);
    Composite optionComp = new Composite(buttonComp, SWT.NONE);
    optionComp.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
    optionComp.setLayout(new GridLayout(2, false));
    new Label(optionComp, SWT.NONE).setText(Messages.EditMetaDialog_latency);
    latencyField = new NumericControl(optionComp, SWT.NONE);
    latencyField.setLayoutData(new GridData(SWT.BEGINNING, SWT.CENTER, false, false));
    latencyField.setMaximum(60);
    latencyField.setMinimum(1);
    latencyField.setIncrement(1);
    pauseButton = WidgetFactory.createCheckButton(optionComp, Messages.EditMetaDialog_paused,
            new GridData(SWT.BEGINNING, SWT.END, true, false, 2, 1));

    // Footer
    bgimportField = WidgetFactory.createCheckButton(composite, Messages.EditMetaDialog_show_bg_imports,
            new GridData(SWT.BEGINNING, SWT.END, true, false, 2, 1));

    autoWatchButton = WidgetFactory.createCheckButton(composite,
            Messages.EditMetaDialog_automatically_add_imported_folders,
            new GridData(SWT.BEGINNING, SWT.END, true, false, 2, 1));
}

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

License:Open Source License

@SuppressWarnings("unused")
private void createKeywordsGroup(final CTabFolder folder) {
    final Composite kwComp = createTabPage(folder, Messages.EditMetaDialog_keywords,
            Messages.EditMetaDialog_keyword_tooltip, 2, 0);
    CGroup kwGroup = new CGroup(kwComp, SWT.NONE);
    kwGroup.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
    kwGroup.setLayout(new GridLayout(2, false));
    kwGroup.setText(Messages.EditMetaDialog_cat_keywords);
    Label catKwLabel = new Label(kwGroup, SWT.NONE);
    catKwLabel.setLayoutData(new GridData(SWT.BEGINNING, SWT.CENTER, false, false));
    catKwLabel.setFont(JFaceResources.getFontRegistry().get(UiConstants.SELECTIONFONT));
    flatKeywordGroup = new FlatGroup(kwGroup, SWT.NONE, settings, "hierarchicalKeywords"); //$NON-NLS-1$
    flatKeywordGroup.setLayoutData(new GridData(SWT.END, SWT.BEGINNING, false, false));
    flatKeywordGroup.addListener(new Listener() {
        @Override//ww w.java2 s . co  m
        public void handleEvent(Event event) {
            keywordViewer.setInput(keywords);
            keywordViewer.expandAll();
            keywordExpandCollapseGroup.setVisible(!flatKeywordGroup.isFlat());
        }
    });
    Composite viewerGroup = new Composite(kwGroup, SWT.NONE);
    viewerGroup.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
    GridLayout layout = new GridLayout(2, false);
    layout.marginHeight = layout.marginWidth = 0;
    viewerGroup.setLayout(layout);
    final FilterField filterField = new FilterField(viewerGroup);
    filterField.addModifyListener(new ModifyListener() {
        public void modifyText(ModifyEvent e) {
            keywordViewer.setInput(keywords);
            keywordViewer.expandAll();
        }
    });
    final CheckboxButton excludeButton = WidgetFactory.createCheckButton(viewerGroup,
            Messages.KeywordGroup_exclude_geographic, new GridData(SWT.END, SWT.CENTER, true, false));
    excludeButton.addListener(new Listener() {

        @Override
        public void handleEvent(Event event) {
            excludeGeographic = excludeButton.getSelection();
            Object[] expandedElements = keywordViewer.getExpandedElements();
            keywordViewer.setInput(keywords);
            keywordViewer.setExpandedElements(expandedElements);
        }
    });
    keywordExpandCollapseGroup = new ExpandCollapseGroup(viewerGroup, SWT.NONE,
            new GridData(SWT.END, SWT.BEGINNING, true, false, 2, 1));
    keywordViewer = new TreeViewer(viewerGroup, SWT.V_SCROLL | SWT.BORDER);
    keywordExpandCollapseGroup.setViewer(keywordViewer);
    keywordExpandCollapseGroup.setVisible(!flatKeywordGroup.isFlat());
    setViewerLayout(keywordViewer, 220, 2);
    keywordViewer.setContentProvider(new KeywordContentProvider());
    keywordViewer.setLabelProvider(new KeywordLabelProvider(getVocabManager(), null));
    ZColumnViewerToolTipSupport.enableFor(keywordViewer);
    keywordViewer.setComparator(ZViewerComparator.INSTANCE);
    UiUtilities.installDoubleClickExpansion(keywordViewer);
    keywordViewer.setFilters(new ViewerFilter[] { new ViewerFilter() {
        @Override
        public boolean select(Viewer aViewer, Object parentElement, Object element) {
            WildCardFilter filter = filterField.getFilter();
            return filter == null || element instanceof Character || filter.accept((String) element);
        }
    } });
    keywordViewer.addSelectionChangedListener(new ISelectionChangedListener() {
        public void selectionChanged(SelectionChangedEvent event) {
            updateButtons();
        }
    });
    configureKeywordLink = new CLink(viewerGroup, SWT.NONE);
    configureKeywordLink.setText(Messages.EditMetaDialog_configure_keyword_filter);
    configureKeywordLink.addListener(new Listener() {
        @Override
        public void handleEvent(Event event) {
            PreferencesUtil.createPreferenceDialogOn(getShell(), KeyPreferencePage.ID, new String[0], null)
                    .open();
        }
    });
    final Composite buttonGroup = new Composite(kwGroup, SWT.NONE);
    buttonGroup.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, false));
    buttonGroup.setLayout(new GridLayout());

    keywordAddButton = createPushButton(buttonGroup, Messages.EditMetaDialog_add,
            Messages.EditMetaDialog_add_keyword_tooltip);
    keywordAddButton.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            ZInputDialog dialog = createKeywordDialog(Messages.EditMetaDialog_add_keyword,
                    Messages.EditMetaDialog_enter_a_new_keyword, ""); //$NON-NLS-1$
            if (dialog.open() == Window.OK)
                addKeywordToViewer(keywordViewer, dialog.getValue(), true);
        }
    });
    keywordModifyButton = createPushButton(buttonGroup, Messages.EditMetaDialog_edit,
            Messages.EditMetaDialog_modify_keyword_tooltip);
    keywordModifyButton.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            editKeyword();
        }
    });
    keywordViewer.getControl().addKeyListener(keyListener);
    keywordViewer.addSelectionChangedListener(new ISelectionChangedListener() {
        public void selectionChanged(final SelectionChangedEvent event) {
            updateButtons();
            if (cntrlDwn) {
                if (keywordModifyButton.isEnabled())
                    editKeyword();
                cntrlDwn = false;
            }
        }
    });
    keywordReplaceButton = createPushButton(buttonGroup, Messages.EditMetaDialog_replace,
            Messages.EditMetaDialog_replace_tooltip);
    keywordReplaceButton.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            String kw = (String) ((IStructuredSelection) keywordViewer.getSelection()).getFirstElement();
            if (kw != null) {
                KeywordDialog dialog = new KeywordDialog(getShell(),
                        NLS.bind(Messages.EditMetaDialog_replace_keyword, kw), null, keywords, null);
                if (dialog.open() == Window.OK) {
                    BagChange<String> result = dialog.getResult();
                    boolean found = false;
                    Set<String> added = result.getAdded();
                    if (added != null)
                        for (String s : added)
                            if (kw.equals(s)) {
                                found = true;
                                break;
                            }
                    if (!found)
                        removeKeywordFromViewer(keywordViewer, kw);
                    Set<String> addedKeywords = result.getAdded();
                    String[] replacement = addedKeywords.toArray(new String[addedKeywords.size()]);
                    int i = 0;
                    for (String k : replacement)
                        addKeywordToViewer(keywordViewer, k, i++ == 0);
                    todo.add(new ReplaceKeywordOperation(kw, replacement));
                }
            }
        }
    });
    keywordDeleteButton = createPushButton(buttonGroup, Messages.EditMetaDialog_delete_keyword,
            Messages.EditMetaDialog_delete_keyword_tooltip);
    keywordDeleteButton.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            BusyIndicator.showWhile(keywordDeleteButton.getDisplay(), () -> {
                IStructuredSelection selection = (IStructuredSelection) keywordViewer.getSelection();
                String kw = (String) selection.getFirstElement();
                if (kw != null) {
                    List<AssetImpl> set = dbManager.obtainObjects(AssetImpl.class,
                            QueryField.IPTC_KEYWORDS.getKey(), kw, QueryField.EQUALS);
                    removeKeywordFromViewer(keywordViewer, kw);
                    if (!set.isEmpty()) {
                        KeywordDeleteDialog dialog = new KeywordDeleteDialog(getShell(), kw, set);
                        if (dialog.open() != Window.OK) {
                            keywords.add(kw);
                            return;
                        }
                        if (dialog.getPolicy() == KeywordDeleteDialog.REMOVE)
                            todo.add(new ManageKeywordsOperation(
                                    new BagChange<String>(null, null, Collections.singleton(kw), null), set));
                    }
                }
            });
        }
    });
    keywordShowButton = createPushButton(buttonGroup, Messages.EditMetaDialog_show_images,
            Messages.EditMetaDialog_show_keyword_tooltip);
    keywordShowButton.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            IStructuredSelection selection = (IStructuredSelection) keywordViewer.getSelection();
            String kw = (String) selection.getFirstElement();
            if (kw != null) {
                SmartCollectionImpl sm = new SmartCollectionImpl(kw, false, false, true, false, null, 0, null,
                        0, null, Constants.INHERIT_LABEL, null, 0, null);
                sm.addCriterion(new CriterionImpl(QueryField.IPTC_KEYWORDS.getKey(), null, kw,
                        QueryField.EQUALS, false));
                sm.addSortCriterion(new SortCriterionImpl(QueryField.IPTC_DATECREATED.getKey(), null, true));
                Ui.getUi().getNavigationHistory(workbenchPage.getWorkbenchWindow())
                        .postSelection(new StructuredSelection(sm));
                close();
            }
        }
    });
    new Label(buttonGroup, SWT.SEPARATOR | SWT.HORIZONTAL);

    keywordCollectButton = createPushButton(buttonGroup, Messages.EditMetaDialog_collect,
            Messages.EditMetaDialog_collect_keyword_tooltip);
    keywordCollectButton.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            KeywordCollectDialog dialog = new KeywordCollectDialog(getShell(), keywords);
            if (dialog.open() == Window.OK) {
                int i = 0;
                for (String kw : dialog.getToAdd())
                    addKeywordToViewer(keywordViewer, kw, i++ == 0);
                for (String kw : dialog.getToRemove())
                    removeKeywordFromViewer(keywordViewer, kw);
            }
        }
    });

    keywordLoadButton = createPushButton(buttonGroup, Messages.EditMetaDialog_load,
            NLS.bind(Messages.EditMetaDialog_load_keyword_tooltip, Constants.KEYWORDFILEEXTENSION));
    keywordLoadButton.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent ev) {
            FileDialog dialog = new FileDialog(getShell(), SWT.OPEN);
            dialog.setFilterExtensions(KEYWORDEXTENSIONS);
            dialog.setFilterNames(
                    new String[] {
                            Constants.APPNAME + Messages.EditMetaDialog_zoom_keyword_file
                                    + Constants.KEYWORDFILEEXTENSION + ')',
                            Messages.EditMetaDialog_all_files });
            String filename = dialog.open();
            if (filename != null) {
                try (InputStream in = new BufferedInputStream(new FileInputStream(filename))) {
                    List<String> list = Utilities.loadKeywords(in);
                    keywords.clear();
                    keywords.addAll(list);
                } catch (IOException e) {
                    // ignore
                }
                keywordViewer.setInput(keywords);
                keywordViewer.expandAll();
            }
        }
    });
    keywordSaveButton = createPushButton(buttonGroup, Messages.EditMetaDialog_save,
            NLS.bind(Messages.EditMetaDialog_save_keyword_tooltip, Constants.KEYWORDFILEEXTENSION));
    keywordSaveButton.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            FileDialog dialog = new FileDialog(getShell(), SWT.SAVE);
            dialog.setFilterExtensions(KEYWORDEXTENSIONS);
            dialog.setFilterNames(
                    new String[] {
                            Constants.APPNAME + Messages.EditMetaDialog_zoom_keyword_file
                                    + Constants.KEYWORDFILEEXTENSION + ")", //$NON-NLS-1$
                            Messages.EditMetaDialog_all_files });
            dialog.setFileName("*" + Constants.KEYWORDFILEEXTENSION); //$NON-NLS-1$
            dialog.setOverwrite(true);
            String filename = dialog.open();
            if (filename != null)
                Utilities.saveKeywords(keywords, new File(filename));
        }
    });
    addToKeywordsButton = WidgetFactory.createCheckButton(kwGroup, Messages.EditMetaDialog_add_to_keywords,
            new GridData(SWT.BEGINNING, SWT.END, true, false, 2, 1));
    CGroup vocabGroup = new CGroup(kwComp, SWT.NONE);
    vocabGroup.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
    vocabGroup.setLayout(new GridLayout(2, false));
    vocabGroup.setText(Messages.EditMetaDialog_controlled_vocabs);
    Composite vocabViewerGroup = new Composite(vocabGroup, SWT.NONE);
    GridData layoutData = new GridData(SWT.FILL, SWT.FILL, true, true);
    layoutData.verticalIndent = 20;
    vocabViewerGroup.setLayoutData(layoutData);
    vocabViewerGroup.setLayout(new GridLayout(2, false));

    vocabViewer = new TableViewer(vocabViewerGroup, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER);
    setViewerLayout(vocabViewer, 150, 1);
    TableViewerColumn col1 = new TableViewerColumn(vocabViewer, SWT.NONE);
    col1.getColumn().setWidth(300);
    col1.setLabelProvider(new ZColumnLabelProvider() {
        @Override
        public String getText(Object element) {
            return element.toString();
        }

        @Override
        public Image getImage(Object element) {
            if (element instanceof String && !new File((String) element).exists())
                return Icons.error.getImage();
            return null;
        }

        @Override
        public String getToolTipText(Object element) {
            if (element instanceof String && UiActivator.getDefault().getShowHover()) {
                File file = new File((String) element);
                if (!file.exists())
                    return Messages.EditMetaDialog_file_does_not_exist;
            }
            return super.getToolTipText(element);
        }

        @Override
        public Image getToolTipImage(Object element) {
            return getImage(element);
        }
    });
    vocabViewer.setContentProvider(ArrayContentProvider.getInstance());
    vocabViewer.addSelectionChangedListener(new ISelectionChangedListener() {
        @Override
        public void selectionChanged(SelectionChangedEvent event) {
            updateButtons();
        }
    });
    vocabViewer.addDoubleClickListener(new IDoubleClickListener() {
        @Override
        public void doubleClick(DoubleClickEvent event) {
            viewVocab();
        }
    });
    ColumnViewerToolTipSupport.enableFor(vocabViewer);
    Composite vocabButtonGroup = new Composite(vocabViewerGroup, SWT.NONE);
    vocabButtonGroup.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
    vocabButtonGroup.setLayout(new GridLayout());
    vocabAddButton = createPushButton(vocabButtonGroup, Messages.EditMetaDialog_add,
            Messages.EditMetaDialog_add_vocab);
    vocabAddButton.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            FileDialog dialog = new FileDialog(getShell(), SWT.OPEN);
            dialog.setText(Messages.EditMetaDialog_select_vocab);
            dialog.setFilterExtensions(KEYWORDEXTENSIONS);
            dialog.setFilterNames(
                    new String[] {
                            Constants.APPNAME + Messages.EditMetaDialog_zoom_keyword_file
                                    + Constants.KEYWORDFILEEXTENSION + ')',
                            Messages.EditMetaDialog_all_files });
            String file = dialog.open();
            if (file != null) {
                boolean found = false;
                for (String s : vocabularies)
                    if (s.equals(file)) {
                        found = true;
                        break;
                    }
                if (!found) {
                    vocabularies.add(file);
                    vocabViewer.add(file);
                }
                vocabViewer.setSelection(new StructuredSelection(file), true);
                if (vocabManager != null)
                    vocabManager.reset(vocabularies);
                updateKeywordViewer();
            }
        }
    });
    vocabRemoveButton = createPushButton(vocabButtonGroup, Messages.EditMetaDialog_remove,
            Messages.EditMetaDialog_remove_vocab);
    vocabRemoveButton.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            @SuppressWarnings("unchecked")
            Iterator<Object> it = vocabViewer.getStructuredSelection().iterator();
            while (it.hasNext()) {
                Object file = it.next();
                vocabularies.remove(file);
                vocabViewer.remove(file);
            }
            if (vocabManager != null)
                vocabManager.reset(vocabularies);
            updateKeywordViewer();
        }
    });
    vocabViewButton = createPushButton(vocabButtonGroup, Messages.EditMetaDialog_view_vocab,
            Messages.EditMetaDialog_view_vocab_tooltip);
    vocabViewButton.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            viewVocab();
        }
    });
    new Label(vocabButtonGroup, SWT.SEPARATOR | SWT.HORIZONTAL);
    vocabEnforceButton = createPushButton(vocabButtonGroup, Messages.EditMetaDialog_enforce,
            Messages.EditMetaDialog_enforce_tooltip);
    vocabEnforceButton.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            List<String[]> changes = new ArrayList<>();
            VocabManager vManager = getVocabManager();
            for (String kw : keywords) {
                String mapped = vManager.getVocab(kw);
                if (!kw.equals(mapped))
                    changes.add(new String[] { kw, mapped });
            }
            VocabEnforceDialog dialog = new VocabEnforceDialog(getShell(), changes);
            if (dialog.open() == VocabEnforceDialog.OK) {
                BusyIndicator.showWhile(getShell().getDisplay(), () -> {
                    int policy = dialog.getPolicy();
                    for (String[] change : dialog.getChanges()) {
                        String kw = change[0];
                        keywords.remove(kw);
                        if (change[1] != null) {
                            keywords.add(change[1]);
                            if (policy == KeywordDeleteDialog.REMOVE)
                                todo.add(new ReplaceKeywordOperation(kw, new String[] { change[1] }));
                        } else if (policy == KeywordDeleteDialog.REMOVE)
                            todo.add(new ManageKeywordsOperation(
                                    new BagChange<String>(null, null, Collections.singleton(kw), change),
                                    null));
                        updateKeywordViewer();
                    }

                });
            }
        }
    });
}

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

License:Open Source License

@Override
protected Control createDialogArea(Composite parent) {
    Composite area = (Composite) super.createDialogArea(parent);
    Composite comp = new Composite(area, SWT.NONE);
    comp.setLayoutData(new GridData(GridData.FILL_BOTH));
    comp.setLayout(new GridLayout());
    viewer = new TableViewer(parent,
            SWT.SINGLE | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION | SWT.BORDER);
    Table table = viewer.getTable();/*from  w w w.  java2  s . co  m*/
    table.setLayoutData(new GridData(GridData.FILL_BOTH));
    table.setLinesVisible(true);
    table.setHeaderVisible(true);
    TableViewerColumn col1 = new TableViewerColumn(viewer, SWT.NONE);
    col1.getColumn().setWidth(200);
    col1.getColumn().setText(Messages.EditStructDialog_name);
    col1.setLabelProvider(new ZColumnLabelProvider() {
        @Override
        public String getText(Object element) {
            if (element instanceof QueryField) {
                QueryField qf = (QueryField) element;
                return !readonly && qf.isEditable((Asset) null) ? Format.EDITABLEINDICATOR + qf.getLabel()
                        : qf.getLabel(); // $NON-NLS-1$
            }
            return null;
        }
    });
    TableViewerColumn col2 = new TableViewerColumn(viewer, SWT.NONE);
    col2.getColumn().setWidth(400);
    col2.getColumn().setText(Messages.EditStructDialog_value);
    col2.setLabelProvider(new ValueColumnLabelProvider());
    col2.setEditingSupport(new ViewEditingSupport(viewer));
    viewer.setContentProvider(new ViewContentProvider());
    // viewer.setComparator(new ViewComparator());
    if (fields != null)
        viewer.setFilters(new ViewerFilter[] { new ViewerFilter() {
            @Override
            public boolean select(Viewer viewer, Object parentElement, Object element) {
                for (QueryField qfield : fields) {
                    if (qfield == element)
                        return true;
                }
                return false;
            }
        } });
    viewer.setInput(qfield);
    return area;
}

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

License:Open Source License

@Override
protected Control createDialogArea(Composite parent) {
    Composite area = (Composite) super.createDialogArea(parent);
    Composite composite = new Composite(area, SWT.NONE);
    composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
    composite.setLayout(new GridLayout(1, false));
    ftpViewer = new TableViewer(composite, SWT.V_SCROLL | SWT.SINGLE);
    ftpViewer.getControl().setLayoutData(new GridData(GridData.FILL_BOTH));
    ftpViewer.setContentProvider(ArrayContentProvider.getInstance());
    ftpViewer.setLabelProvider(new ZColumnLabelProvider() {
        @Override/*from  ww w  .  j  ava2  s .  c  om*/
        public String getText(Object element) {
            if (element instanceof FtpAccount)
                return ((FtpAccount) element).getName();
            return element.toString();
        }
    });
    ftpViewer.setComparator(ZViewerComparator.INSTANCE);
    ftpViewer.addSelectionChangedListener(new ISelectionChangedListener() {
        public void selectionChanged(SelectionChangedEvent event) {
            updateButtons();
        }
    });
    List<FtpAccount> ftpAccounts = FtpAccount.getAllAccounts();
    ftpViewer.setInput(ftpAccounts);
    return area;
}

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

License:Open Source License

@Override
protected Control createDialogArea(Composite parent) {
    Composite area = (Composite) super.createDialogArea(parent);
    Composite composite = new Composite(area, SWT.NONE);
    composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
    composite.setLayout(new GridLayout(1, false));
    viewer = new TableViewer(composite, SWT.FULL_SELECTION | SWT.SINGLE | SWT.V_SCROLL | SWT.BORDER);
    viewer.getTable().setLinesVisible(true);
    viewer.getTable().setHeaderVisible(true);
    viewer.getTable().setLayoutData(new GridData(780, 250));
    TableViewerColumn col1 = new TableViewerColumn(viewer, SWT.NONE);
    col1.getColumn().setWidth(180);//  w w  w.ja  va  2s .  c  o  m
    col1.getColumn().setText(Messages.MediaDialog_volume_name);
    col1.setLabelProvider(new ZColumnLabelProvider() {
        @Override
        public String getText(Object element) {
            if (element instanceof LastDeviceImport)
                return ((LastDeviceImport) element).getVolume();
            return element.toString();
        }
    });
    TableViewerColumn col2 = new TableViewerColumn(viewer, SWT.NONE);
    col2.getColumn().setWidth(140);
    col2.getColumn().setText(Messages.MediaDialog_owner);
    col2.setLabelProvider(new ZColumnLabelProvider() {
        @Override
        public String getText(Object element) {
            if (element instanceof LastDeviceImport)
                return ((LastDeviceImport) element).getOwner();
            return element.toString();
        }
    });
    col2.setEditingSupport(new EditingSupport(viewer) {
        @Override
        protected void setValue(Object element, Object value) {
            if (element instanceof LastDeviceImport && value instanceof String) {
                ((LastDeviceImport) element).setOwner((String) value);
                viewer.update(element, null);
            }
        }

        @Override
        protected Object getValue(Object element) {
            if (element instanceof LastDeviceImport)
                return ((LastDeviceImport) element).getOwner();
            return ""; //$NON-NLS-1$
        }

        @Override
        protected CellEditor getCellEditor(Object element) {
            return new TextCellEditor(viewer.getTable());
        }

        @Override
        protected boolean canEdit(Object element) {
            return true;
        }
    });
    TableViewerColumn col3 = new TableViewerColumn(viewer, SWT.NONE);
    col3.getColumn().setWidth(140);
    col3.getColumn().setText(Messages.MediaDialog_last_import);
    col3.setLabelProvider(new ZColumnLabelProvider() {
        @Override
        public String getText(Object element) {
            if (element instanceof LastDeviceImport) {
                long timestamp = ((LastDeviceImport) element).getTimestamp();
                return timestamp == 0L ? " - " : sdf.format(new Date(timestamp)); //$NON-NLS-1$
            }
            return element.toString();
        }
    });
    col3.setEditingSupport(new EditingSupport(viewer) {

        @Override
        protected void setValue(Object element, Object value) {
            if (element instanceof LastDeviceImport && value instanceof String) {
                try {
                    ((LastDeviceImport) element).setTimestamp(sdf.parse((String) value).getTime());
                    viewer.update(element, null);
                } catch (ParseException e) {
                    // do nothing
                }
            }
        }

        @Override
        protected Object getValue(Object element) {
            if (element instanceof LastDeviceImport)
                return sdf.format(new Date(((LastDeviceImport) element).getTimestamp()));
            return ""; //$NON-NLS-1$
        }

        @Override
        protected CellEditor getCellEditor(Object element) {
            TextCellEditor editor = new TextCellEditor(viewer.getTable());
            editor.setValidator(new ICellEditorValidator() {
                public String isValid(Object value) {
                    if (value instanceof String) {
                        try {
                            sdf.parse((String) value);
                            setErrorMessage(null);
                        } catch (ParseException e) {
                            String errorMessage = NLS.bind(Messages.MediaDialog_bad_date_format,
                                    Messages.MediaDialog_import_date_mask);
                            setErrorMessage(errorMessage);
                            return errorMessage;
                        }
                    }
                    return null;
                }
            });
            return editor;
        }

        @Override
        protected boolean canEdit(Object element) {
            return true;
        }
    });
    TableViewerColumn col4 = new TableViewerColumn(viewer, SWT.NONE);
    col4.getColumn().setWidth(300);
    col4.getColumn().setText(Messages.MediaDialog_comments);
    col4.setLabelProvider(new ZColumnLabelProvider() {
        @Override
        public String getText(Object element) {
            if (element instanceof LastDeviceImport)
                return ((LastDeviceImport) element).getDescription();
            return element.toString();
        }
    });
    col4.setEditingSupport(new EditingSupport(viewer) {
        @Override
        protected void setValue(Object element, Object value) {
            if (element instanceof LastDeviceImport && value instanceof String) {
                ((LastDeviceImport) element).setDescription((String) value);
                viewer.update(element, null);
            }
        }

        @Override
        protected Object getValue(Object element) {
            if (element instanceof LastDeviceImport)
                return ((LastDeviceImport) element).getDescription();
            return ""; //$NON-NLS-1$
        }

        @Override
        protected CellEditor getCellEditor(Object element) {
            return new TextCellEditor(viewer.getTable());
        }

        @Override
        protected boolean canEdit(Object element) {
            return true;
        }
    });
    viewer.setContentProvider(ArrayContentProvider.getInstance());
    viewer.setComparator(ZViewerComparator.INSTANCE);
    viewer.setFilters(new ViewerFilter[] { new ViewerFilter() {
        @Override
        public boolean select(Viewer viewer, Object parentElement, Object element) {
            if (element instanceof LastDeviceImport) {
                String volume = ((LastDeviceImport) element).getVolume();
                return volume.indexOf('/') < 0 && volume.indexOf('\\') < 0;
            }
            return false;
        }
    } });
    viewer.addSelectionChangedListener(new ISelectionChangedListener() {
        public void selectionChanged(SelectionChangedEvent event) {
            updateButtons();
        }
    });
    return area;
}

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

License:Open Source License

@Override
protected Control createDialogArea(Composite parent) {
    Composite area = (Composite) super.createDialogArea(parent);
    Composite composite = new Composite(area, SWT.NONE);
    composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
    composite.setLayout(new GridLayout(1, false));
    CGroup fileGroup = new CGroup(composite, SWT.NONE);
    fileGroup.setText(Messages.MigrateDialog_save_as);
    fileGroup.setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING, true, true));
    fileGroup.setLayout(new GridLayout());
    String filename = catFile.getName();
    String migrated = "migrated_" + filename; //$NON-NLS-1$
    String parentFile = catFile.getParent();
    File migratedFile = new File(parentFile, migrated);
    fileEditor = new FileEditor(fileGroup, SWT.SAVE, "", false, //$NON-NLS-1$
            new String[] { "*" + BatchConstants.CATEXTENSION }, //$NON-NLS-1$
            new String[] { "ZoRaPD Catalog (*" //$NON-NLS-1$
                    + BatchConstants.CATEXTENSION + ")" }, //$NON-NLS-1$
            parentFile, migratedFile.getPath(), false, getDialogSettings(UiActivator.getDefault(), SETTINGSID));
    CGroup tableGroup = new CGroup(composite, SWT.NONE);
    tableGroup.setText(Messages.MigrateDialog_transformation);
    tableGroup.setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING, true, true));
    tableGroup.setLayout(new GridLayout());
    new Label(tableGroup, SWT.NONE).setText(Messages.MigrateDialog_file_separator_policy);
    fileSeparatorCombo = new Combo(tableGroup, SWT.DROP_DOWN | SWT.READ_ONLY);
    fileSeparatorCombo.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
    fileSeparatorCombo.setItems(new String[] { Messages.MigrateDialog_do_nothing,
            Messages.MigrateDialog_toSlash, Messages.MigrateDialog_toBackslash });
    fileSeparatorCombo.select(fileSepearatorPolicy);
    new Label(tableGroup, SWT.NONE).setText(Messages.MigrateDialog_rules);
    new Label(tableGroup, SWT.NONE).setText(Messages.MigrateDialog_rules_explanation);
    Composite tableComp = new Composite(tableGroup, SWT.NONE);
    tableComp.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
    GridLayout layout = new GridLayout(2, false);
    layout.horizontalSpacing = layout.verticalSpacing = 0;
    tableComp.setLayout(layout);/*from   w  ww  .ja va  2  s .c o  m*/
    viewer = new TableViewer(tableComp, SWT.BORDER | SWT.SINGLE | SWT.V_SCROLL | SWT.FULL_SELECTION);
    viewer.getTable().setLinesVisible(true);
    viewer.getTable().setHeaderVisible(true);
    GridData layoutData = new GridData(SWT.FILL, SWT.FILL, true, true);
    layoutData.heightHint = 300;
    viewer.getTable().setLayoutData(layoutData);
    final TableViewerColumn col1 = new TableViewerColumn(viewer, SWT.NONE);
    col1.getColumn().setWidth(350);
    col1.getColumn().setText(Messages.MigrateDialog_source_pattern);
    col1.setLabelProvider(new ZColumnLabelProvider() {
        @Override
        public String getText(Object element) {
            if (element instanceof MigrationRule)
                return ((MigrationRule) element).getSourcePattern();
            return element.toString();
        }
    });
    final TableViewerColumn col2 = new TableViewerColumn(viewer, SWT.NONE);
    col2.getColumn().setWidth(220);
    col2.getColumn().setText(Messages.MigrateDialog_target_pattern);
    col2.setLabelProvider(new ZColumnLabelProvider() {
        @Override
        public String getText(Object element) {
            if (element instanceof MigrationRule)
                return ((MigrationRule) element).getTargetPattern();
            return super.getText(element);
        }
    });
    final TableViewerColumn col3 = new TableViewerColumn(viewer, SWT.NONE);
    col3.getColumn().setWidth(100);
    col3.getColumn().setText(Messages.MigrateDialog_target_volume);
    col3.setLabelProvider(new ZColumnLabelProvider() {
        @Override
        public String getText(Object element) {
            if (element instanceof MigrationRule)
                return ((MigrationRule) element).getTargetVolume();
            return element.toString();
        }
    });
    viewer.setContentProvider(ArrayContentProvider.getInstance());
    viewer.addSelectionChangedListener(new ISelectionChangedListener() {
        public void selectionChanged(SelectionChangedEvent event) {
            updateButtons();
        }
    });
    Composite buttonComp = new Composite(tableComp, SWT.NONE);
    buttonComp.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
    buttonComp.setLayout(new GridLayout(1, false));
    Button addPatternButton = new Button(buttonComp, SWT.PUSH);
    addPatternButton.setLayoutData(new GridData(SWT.BEGINNING, SWT.CENTER, false, false));
    addPatternButton.setText(Messages.MigrateDialog_add_pattern);
    addPatternButton.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            RegExDialog dialog = new RegExDialog(getShell(), null, null, false,
                    fileSeparatorCombo.getSelectionIndex(), -1);
            if (dialog.open() == RegExDialog.OK) {
                MigrationRule result = dialog.getResult();
                rules.add(result);
                viewer.add(result);
                viewer.setSelection(new StructuredSelection(result));
                updateButtons();
                dirty = true;
            }
        }
    });
    Button addFolderButton = new Button(buttonComp, SWT.PUSH);
    addFolderButton.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            DirectoryDialog dirDialog = new DirectoryDialog(getShell());
            dirDialog.setText(Messages.MigrateDialog_select_folder);
            String dir = dirDialog.open();
            if (dir != null) {
                if (!dir.endsWith(File.separator))
                    dir += File.separator;
                if (Constants.WIN32) {
                    int i = dir.indexOf(':');
                    if (i == 1) {
                        String volume = Core.getCore().getVolumeManager().getVolumeForFile(new File(dir));
                        if (volume != null)
                            dir = volume + dir.substring(1);
                    }
                }
                char filesep;
                fileSepearatorPolicy = fileSeparatorCombo.getSelectionIndex();
                switch (fileSepearatorPolicy) {
                case 1:
                    filesep = '/';
                    break;
                case 2:
                    filesep = '\\';
                    break;
                default:
                    filesep = File.separatorChar;
                    break;
                }
                String sourcePattern = dir + "(.*)"; //$NON-NLS-1$
                MigrationRule rule = new MigrationRuleImpl(sourcePattern.replaceAll("\\\\", "\\\\\\\\"), //$NON-NLS-1$ //$NON-NLS-2$
                        Messages.MigrateDialog_target_folder + filesep + "$1", null); //$NON-NLS-1$
                RegExDialog regexDialog = new RegExDialog(getShell(), rule, dir, true, fileSepearatorPolicy,
                        Messages.MigrateDialog_target_folder.length());
                if (regexDialog.open() == RegExDialog.OK) {
                    MigrationRule result = regexDialog.getResult();
                    rules.add(result);
                    viewer.add(result);
                    viewer.setSelection(new StructuredSelection(result));
                    updateButtons();
                    dirty = true;
                }
            }
        }
    });
    addFolderButton.setLayoutData(new GridData(SWT.BEGINNING, SWT.CENTER, false, false));
    addFolderButton.setText(Messages.MigrateDialog_add_folder);
    editPatternButton = new Button(buttonComp, SWT.PUSH);
    editPatternButton.setLayoutData(new GridData(SWT.BEGINNING, SWT.CENTER, false, false));
    editPatternButton.setText(Messages.MigrateDialog_edit_pattern);
    editPatternButton.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            MigrationRule policy = (MigrationRule) viewer.getStructuredSelection().getFirstElement();
            RegExDialog regexDialog = new RegExDialog(getShell(), policy, null, false,
                    fileSeparatorCombo.getSelectionIndex(), -1);
            if (regexDialog.open() == RegExDialog.OK) {
                MigrationRule result = regexDialog.getResult();
                policy.setSourcePattern(result.getSourcePattern());
                policy.setTargetPattern(result.getTargetPattern());
                viewer.update(policy, null);
                updateButtons();
                dirty = true;
            }
        }
    });
    removePatternButton = new Button(buttonComp, SWT.PUSH);
    removePatternButton.setLayoutData(new GridData(SWT.BEGINNING, SWT.CENTER, false, false));
    removePatternButton.setText(Messages.MigrateDialog_remove_pattern);
    removePatternButton.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            Object policy = viewer.getStructuredSelection().getFirstElement();
            rules.remove(policy);
            viewer.remove(policy);
            updateButtons();
            dirty = true;
        }
    });
    Label sep = new Label(buttonComp, SWT.SEPARATOR | SWT.HORIZONTAL);
    sep.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
    upButton = new Button(buttonComp, SWT.PUSH);
    upButton.setLayoutData(new GridData(SWT.BEGINNING, SWT.CENTER, false, false));
    upButton.setText(Messages.MigrateDialog_up);
    upButton.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            MigrationRule policy = (MigrationRule) viewer.getStructuredSelection().getFirstElement();
            int i = rules.indexOf(policy);
            if (i > 0) {
                rules.remove(i);
                rules.add(i - 1, policy);
                viewer.setInput(rules);
                viewer.setSelection(new StructuredSelection(policy));
                updateButtons();
            }
        }
    });
    downButton = new Button(buttonComp, SWT.PUSH);
    downButton.setLayoutData(new GridData(SWT.BEGINNING, SWT.CENTER, false, false));
    downButton.setText(Messages.MigrateDialog_down);
    downButton.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            MigrationRule policy = (MigrationRule) viewer.getStructuredSelection().getFirstElement();
            int i = rules.indexOf(policy);
            if (i < rules.size() - 1) {
                rules.remove(i);
                rules.add(i + 1, policy);
                viewer.setInput(rules);
                viewer.setSelection(new StructuredSelection(policy));
                updateButtons();
            }
        }
    });
    return area;
}

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

License:Open Source License

@Override
protected Control createDialogArea(Composite parent) {
    Composite area = (Composite) super.createDialogArea(parent);
    Composite composite = new Composite(area, SWT.NONE);
    composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
    composite.setLayout(new GridLayout());
    viewer = new TableViewer(composite, SWT.BORDER | SWT.V_SCROLL);
    viewer.getTable().setLayoutData(new GridData(350, 500));
    viewer.getTable().setLinesVisible(true);
    viewer.setContentProvider(ArrayContentProvider.getInstance());
    TableViewerColumn col1 = new TableViewerColumn(viewer, SWT.NONE);
    col1.getColumn().setWidth(250);//  w ww  .ja  v  a2  s . c  o  m
    col1.setLabelProvider(new ZColumnLabelProvider() {
        @Override
        public String getText(Object element) {
            if (element instanceof SmartCollection)
                return ((SmartCollection) element).getName();
            return super.getText(element);
        }
    });
    TableViewerColumn col2 = new TableViewerColumn(viewer, SWT.NONE);
    col2.getColumn().setWidth(250);
    col2.setLabelProvider(new ZColumnLabelProvider() {
        @Override
        public String getText(Object element) {
            if (element instanceof SmartCollection) {
                if (element == pending)
                    return Messages.PurgeEmptyDialog_analyzing;
                if (allDeleted.contains(((SmartCollection) element).getStringId()))
                    return Messages.PurgeEmptyDialog_deleted;
                if (kept.contains(((SmartCollection) element).getStringId()))
                    return Messages.PurgeEmptyDialog_kept;
                return ""; //$NON-NLS-1$
            }
            return super.getText(element);
        }

        @Override
        protected Font getFont(Object element) {
            if (allDeleted.contains(((SmartCollection) element).getStringId()))
                return JFaceResources.getFont(UiConstants.SELECTIONFONT);
            return super.getFont(element);
        }
    });
    viewer.setInput(collections);
    return area;
}

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

License:Open Source License

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

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

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

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

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

License:Open Source License

@SuppressWarnings("unused")
private void createBindingTable(Composite composite) {
    bindingViewer = new TableViewer(composite, SWT.BORDER | SWT.SINGLE | SWT.V_SCROLL | SWT.FULL_SELECTION);
    Table table = bindingViewer.getTable();
    table.setLayoutData(new GridData(550, 300));
    table.setHeaderVisible(true);//from  w  w  w  . j  av a  2 s.  c o  m
    table.setLinesVisible(true);
    commandColumn = createColumn(bindingViewer, Messages.getString("KeyPreferencePage.command"), 200); //$NON-NLS-1$
    commandLabelProvider = new ZColumnLabelProvider() {
        @Override
        public String getText(Object element) {
            if (element instanceof Command) {
                try {
                    return ((Command) element).getName();
                } catch (NotDefinedException e) {
                    return Messages.getString("KeyPreferencePage.undefined"); //$NON-NLS-1$
                }
            }
            return element.toString();
        }

        @Override
        public Font getFont(Object element) {
            if (element instanceof Command) {
                Binding binding = commandMap.get(((Command) element).getId());
                if (binding != null && binding.getType() == Binding.USER)
                    return JFaceResources.getFont(UiConstants.ITALICFONT);
            }
            return super.getFont(element);
        }

    };
    commandColumn.setLabelProvider(commandLabelProvider);
    keyColumn = createColumn(bindingViewer, Messages.getString("KeyPreferencePage.keys"), 150); //$NON-NLS-1$
    keyLabelProvider = new ZColumnLabelProvider() {
        @Override
        public String getText(Object element) {
            if (element instanceof Command) {
                Binding binding = commandMap.get(((Command) element).getId());
                if (binding != null)
                    return binding.getTriggerSequence().format();
                return null;
            }
            return element.toString();
        }
    };
    keyColumn.setLabelProvider(keyLabelProvider);
    catColumn = createColumn(bindingViewer, Messages.getString("KeyPreferencePage.category"), 150); //$NON-NLS-1$
    catLabelProvider = new ZColumnLabelProvider() {
        @Override
        public String getText(Object element) {
            if (element instanceof Command)
                try {
                    return ((Command) element).getCategory().getName();
                } catch (NotDefinedException e) {
                    return Messages.getString("KeyPreferencePage.undefined"); //$NON-NLS-1$
                }
            return element.toString();
        }
    };
    catColumn.setLabelProvider(catLabelProvider);
    bindingViewer.setContentProvider(ArrayContentProvider.getInstance());
    new SortColumnManager(bindingViewer, new int[] { SWT.UP, SWT.UP, SWT.UP }, 0);
    bindingViewer.setComparator(ZViewerComparator.INSTANCE);
    bindingViewer.addSelectionChangedListener(new ISelectionChangedListener() {
        public void selectionChanged(SelectionChangedEvent event) {
            updateDetails();
        }
    });
}

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

License:Open Source License

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