Example usage for org.eclipse.jface.util BidiUtils applyTextDirection

List of usage examples for org.eclipse.jface.util BidiUtils applyTextDirection

Introduction

In this page you can find the example usage for org.eclipse.jface.util BidiUtils applyTextDirection.

Prototype

public static void applyTextDirection(Control control, String textDirection) 

Source Link

Document

Applies a Base Text Direction to the given control (and its descendants, if it's a Composite ).

Usage

From source file:e4.handler.E4TemplatePreferencePage.java

License:Open Source License

@Override
protected Control createContents(Composite ancestor) {
    Composite parent = new Composite(ancestor, SWT.NONE);
    GridLayout layout = new GridLayout();
    layout.numColumns = 2;/*from  w  w w.  j  a v  a2 s  .co  m*/
    layout.marginHeight = 0;
    layout.marginWidth = 0;
    parent.setLayout(layout);

    Composite innerParent = new Composite(parent, SWT.NONE);
    GridLayout innerLayout = new GridLayout();
    innerLayout.numColumns = 2;
    innerLayout.marginHeight = 0;
    innerLayout.marginWidth = 0;
    innerParent.setLayout(innerLayout);
    GridData gd = new GridData(GridData.FILL_BOTH);
    gd.horizontalSpan = 2;
    innerParent.setLayoutData(gd);

    Composite tableComposite = new Composite(innerParent, SWT.NONE);
    GridData data = new GridData(GridData.FILL_BOTH);
    data.widthHint = 360;
    data.heightHint = convertHeightInCharsToPixels(10);
    tableComposite.setLayoutData(data);

    ColumnLayout columnLayout = new ColumnLayout();
    tableComposite.setLayout(columnLayout);
    Table table = new Table(tableComposite,
            SWT.CHECK | SWT.BORDER | SWT.MULTI | SWT.FULL_SELECTION | SWT.H_SCROLL | SWT.V_SCROLL);

    table.setHeaderVisible(true);
    table.setLinesVisible(true);

    GC gc = new GC(getShell());
    gc.setFont(JFaceResources.getDialogFont());

    TableColumn column1 = new TableColumn(table, SWT.NONE);
    column1.setText(TemplatesMessages.TemplatePreferencePage_column_name);
    int minWidth = computeMinimumColumnWidth(gc, TemplatesMessages.TemplatePreferencePage_column_name);
    columnLayout.addColumnData(new ColumnWeightData(2, minWidth, true));

    TableColumn column2 = new TableColumn(table, SWT.NONE);
    column2.setText(TemplatesMessages.TemplatePreferencePage_column_context);
    minWidth = computeMinimumContextColumnWidth(gc);
    columnLayout.addColumnData(new ColumnWeightData(1, minWidth, true));

    TableColumn column3 = new TableColumn(table, SWT.NONE);
    column3.setText(TemplatesMessages.TemplatePreferencePage_column_description);
    minWidth = computeMinimumColumnWidth(gc, TemplatesMessages.TemplatePreferencePage_column_description);
    columnLayout.addColumnData(new ColumnWeightData(3, minWidth, true));

    TableColumn column4 = new TableColumn(table, SWT.NONE);
    column4.setAlignment(SWT.CENTER);
    column4.setText(TemplatesMessages.TemplatePreferencePage_column_autoinsert);
    minWidth = computeMinimumColumnWidth(gc, TemplatesMessages.TemplatePreferencePage_column_autoinsert);
    minWidth = Math.max(minWidth, computeMinimumColumnWidth(gc, TemplatesMessages.TemplatePreferencePage_on));
    columnLayout.addColumnData(new ColumnPixelData(minWidth, false, false));

    gc.dispose();

    fTableViewer = new CheckboxTableViewer(table);
    fTableViewer.setLabelProvider(new TemplateLabelProvider());
    fTableViewer.setContentProvider(new TemplateContentProvider());

    fTableViewer.setComparator(new ViewerComparator() {
        @Override
        public int compare(Viewer viewer, Object object1, Object object2) {
            if ((object1 instanceof TemplatePersistenceData) && (object2 instanceof TemplatePersistenceData)) {
                Template left = ((TemplatePersistenceData) object1).getTemplate();
                Template right = ((TemplatePersistenceData) object2).getTemplate();
                int result = Collator.getInstance().compare(left.getName(), right.getName());
                if (result != 0)
                    return result;
                return Collator.getInstance().compare(left.getDescription(), right.getDescription());
            }
            return super.compare(viewer, object1, object2);
        }

        @Override
        public boolean isSorterProperty(Object element, String property) {
            return true;
        }
    });

    fTableViewer.addDoubleClickListener(new IDoubleClickListener() {
        public void doubleClick(DoubleClickEvent e) {
            edit();
        }
    });

    fTableViewer.addSelectionChangedListener(new ISelectionChangedListener() {
        public void selectionChanged(SelectionChangedEvent e) {
            selectionChanged1();
        }
    });

    fTableViewer.addCheckStateListener(new ICheckStateListener() {
        public void checkStateChanged(CheckStateChangedEvent event) {
            TemplatePersistenceData d = (TemplatePersistenceData) event.getElement();
            d.setEnabled(event.getChecked());
        }
    });

    BidiUtils.applyTextDirection(fTableViewer.getControl(), BidiUtils.BTD_DEFAULT);

    Composite buttons = new Composite(innerParent, SWT.NONE);
    buttons.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING));
    layout = new GridLayout();
    layout.marginHeight = 0;
    layout.marginWidth = 0;
    buttons.setLayout(layout);

    fAddButton = new Button(buttons, SWT.PUSH);
    fAddButton.setText(TemplatesMessages.TemplatePreferencePage_new);
    fAddButton.setLayoutData(getButtonGridData(fAddButton));
    fAddButton.addListener(SWT.Selection, new Listener() {
        public void handleEvent(Event e) {
            add();
        }
    });

    fEditButton = new Button(buttons, SWT.PUSH);
    fEditButton.setText(TemplatesMessages.TemplatePreferencePage_edit);
    fEditButton.setLayoutData(getButtonGridData(fEditButton));
    fEditButton.addListener(SWT.Selection, new Listener() {
        public void handleEvent(Event e) {
            edit();
        }
    });

    fRemoveButton = new Button(buttons, SWT.PUSH);
    fRemoveButton.setText(TemplatesMessages.TemplatePreferencePage_remove);
    fRemoveButton.setLayoutData(getButtonGridData(fRemoveButton));
    fRemoveButton.addListener(SWT.Selection, new Listener() {
        public void handleEvent(Event e) {
            remove();
        }
    });

    createSeparator(buttons);

    fRestoreButton = new Button(buttons, SWT.PUSH);
    fRestoreButton.setText(TemplatesMessages.TemplatePreferencePage_restore);
    fRestoreButton.setLayoutData(getButtonGridData(fRestoreButton));
    fRestoreButton.addListener(SWT.Selection, new Listener() {
        public void handleEvent(Event e) {
            restoreDeleted();
        }
    });

    fRevertButton = new Button(buttons, SWT.PUSH);
    fRevertButton.setText(TemplatesMessages.TemplatePreferencePage_revert);
    fRevertButton.setLayoutData(getButtonGridData(fRevertButton));
    fRevertButton.addListener(SWT.Selection, new Listener() {
        public void handleEvent(Event e) {
            revert();
        }
    });

    createSeparator(buttons);

    fImportButton = new Button(buttons, SWT.PUSH);
    fImportButton.setText(TemplatesMessages.TemplatePreferencePage_import);
    fImportButton.setLayoutData(getButtonGridData(fImportButton));
    fImportButton.addListener(SWT.Selection, new Listener() {
        public void handleEvent(Event e) {
            import_();
        }
    });

    fExportButton = new Button(buttons, SWT.PUSH);
    fExportButton.setText(TemplatesMessages.TemplatePreferencePage_export);
    fExportButton.setLayoutData(getButtonGridData(fExportButton));
    fExportButton.addListener(SWT.Selection, new Listener() {
        public void handleEvent(Event e) {
            export();
        }
    });

    fPatternViewer = doCreateViewer(parent);

    if (isShowFormatterSetting()) {
        fFormatButton = new Button(parent, SWT.CHECK);
        fFormatButton.setText(TemplatesMessages.TemplatePreferencePage_use_code_formatter);
        GridData gd1 = new GridData();
        gd1.horizontalSpan = 2;
        fFormatButton.setLayoutData(gd1);
        fFormatButton.setSelection(getPreferenceStore().getBoolean(getFormatterPreferenceKey()));
    }

    fTableViewer.setInput(fTemplateStore);
    fTableViewer.setAllChecked(false);
    fTableViewer.setCheckedElements(getEnabledTemplates());

    updateButtons();
    Dialog.applyDialogFont(parent);
    innerParent.layout();

    return parent;
}

From source file:org.eclipse.tm4e.languageconfiguration.internal.preferences.LanguageConfigurationPreferencePage.java

License:Open Source License

/**
 * Create grammar list content./*from   ww w.ja  v a2  s . c  o  m*/
 *
 * @param parent
 */
private void createDefinitionsListContent(Composite parent) {
    Label description = new Label(parent, SWT.NONE);
    description.setText(LanguageConfigurationMessages.LanguageConfigurationPreferencePage_description2);
    description.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, false, 2, 1));
    Composite tableComposite = new Composite(parent, SWT.NONE);
    GridData data = new GridData(GridData.FILL_BOTH);
    data.widthHint = 360;
    data.heightHint = convertHeightInCharsToPixels(10);
    tableComposite.setLayoutData(data);

    TableColumnLayout columnLayout = new TableColumnLayout();
    tableComposite.setLayout(columnLayout);
    Table table = new Table(tableComposite,
            SWT.BORDER | SWT.MULTI | SWT.FULL_SELECTION | SWT.H_SCROLL | SWT.V_SCROLL);

    table.setHeaderVisible(true);
    table.setLinesVisible(true);

    GC gc = new GC(getShell());
    gc.setFont(JFaceResources.getDialogFont());

    ColumnViewerComparator viewerComparator = new ColumnViewerComparator();

    definitionViewer = new TableViewer(table);

    TableColumn column1 = new TableColumn(table, SWT.NONE);
    column1.setText(LanguageConfigurationMessages.LanguageConfigurationPreferencePage_contentType);
    int minWidth = computeMinimumColumnWidth(gc,
            LanguageConfigurationMessages.LanguageConfigurationPreferencePage_contentType);
    columnLayout.setColumnData(column1, new ColumnWeightData(2, minWidth, true));
    column1.addSelectionListener(new ColumnSelectionAdapter(column1, definitionViewer, 0, viewerComparator));

    TableColumn column2 = new TableColumn(table, SWT.NONE);
    column2.setText(LanguageConfigurationMessages.LanguageConfigurationPreferencePage_path);
    minWidth = computeMinimumColumnWidth(gc,
            LanguageConfigurationMessages.LanguageConfigurationPreferencePage_path);
    columnLayout.setColumnData(column2, new ColumnWeightData(2, minWidth, true));
    column2.addSelectionListener(new ColumnSelectionAdapter(column2, definitionViewer, 1, viewerComparator));

    TableColumn column3 = new TableColumn(table, SWT.NONE);
    column3.setText(LanguageConfigurationMessages.LanguageConfigurationPreferencePage_pluginId);
    minWidth = computeMinimumColumnWidth(gc,
            LanguageConfigurationMessages.LanguageConfigurationPreferencePage_pluginId);
    columnLayout.setColumnData(column3, new ColumnWeightData(2, minWidth, true));
    column3.addSelectionListener(new ColumnSelectionAdapter(column3, definitionViewer, 2, viewerComparator));

    gc.dispose();

    definitionViewer.setLabelProvider(new LanguageConfigurationLabelProvider());
    definitionViewer.setContentProvider(new LanguageConfigurationContentProvider());
    definitionViewer.setComparator(viewerComparator);

    definitionViewer.addSelectionChangedListener(new ISelectionChangedListener() {

        @Override
        public void selectionChanged(SelectionChangedEvent e) {
            IStructuredSelection selection = definitionViewer.getStructuredSelection();
            infoWidget.refresh(null, manager);
            if (selection.isEmpty()) {
                return;
            }
            ILanguageConfigurationDefinition definition = (ILanguageConfigurationDefinition) (selection)
                    .getFirstElement();
            // Update button
            definitionRemoveButton.setEnabled(definition.getPluginId() == null);
            selectDefinition(definition);
        }

        private void selectDefinition(ILanguageConfigurationDefinition definition) {
            infoWidget.refresh(definition, manager);
        }
    });

    // Specify default sorting
    table.setSortColumn(column1);
    table.setSortDirection(viewerComparator.getDirection());

    BidiUtils.applyTextDirection(definitionViewer.getControl(), BidiUtils.BTD_DEFAULT);

    Composite buttons = new Composite(parent, SWT.NONE);
    buttons.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING));
    GridLayout layout = new GridLayout();
    layout.marginHeight = 0;
    layout.marginWidth = 0;
    buttons.setLayout(layout);

    definitionNewButton = new Button(buttons, SWT.PUSH);
    definitionNewButton.setText(LanguageConfigurationMessages.LanguageConfigurationPreferencePage_new);
    definitionNewButton.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
    definitionNewButton.addListener(SWT.Selection, new Listener() {

        @Override
        public void handleEvent(Event e) {
            add();
        }

        private void add() {
            // Open import wizard for language configurations.
            LanguageConfigurationImportWizard wizard = new LanguageConfigurationImportWizard(false);
            wizard.setRegistryManager(manager);
            WizardDialog dialog = new WizardDialog(getShell(), wizard);
            if (dialog.open() == Window.OK) {
                ILanguageConfigurationDefinition created = wizard.getCreatedDefinition();
                definitionViewer.refresh();
                definitionViewer.setSelection(new StructuredSelection(created));
            }
        }
    });

    definitionRemoveButton = new Button(buttons, SWT.PUSH);
    definitionRemoveButton.setText(LanguageConfigurationMessages.LanguageConfigurationPreferencePage_remove);
    definitionRemoveButton.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
    definitionRemoveButton.addListener(SWT.Selection, new Listener() {

        @Override
        public void handleEvent(Event e) {
            remove();
        }

        private void remove() {
            Collection<ILanguageConfigurationDefinition> definitions = getSelectedUserDefinitions();
            if (!definitions.isEmpty()) {
                for (ILanguageConfigurationDefinition definition : definitions) {
                    manager.unregisterLanguageConfigurationDefinition(definition);
                }
                definitionViewer.refresh();
            }
        }
    });
}

From source file:org.eclipse.tm4e.ui.internal.preferences.GrammarPreferencePage.java

License:Open Source License

/**
 * Create grammar list content.//from  w w w.j  a  va 2  s. c o m
 * 
 * @param parent
 */
private void createGrammarListContent(Composite parent) {
    Composite tableComposite = new Composite(parent, SWT.NONE);
    GridData data = new GridData(GridData.FILL_BOTH);
    data.widthHint = 360;
    data.heightHint = convertHeightInCharsToPixels(10);
    tableComposite.setLayoutData(data);

    TableColumnLayout columnLayout = new TableColumnLayout();
    tableComposite.setLayout(columnLayout);
    Table table = new Table(tableComposite,
            SWT.BORDER | SWT.MULTI | SWT.FULL_SELECTION | SWT.H_SCROLL | SWT.V_SCROLL);

    table.setHeaderVisible(true);
    table.setLinesVisible(true);

    GC gc = new GC(getShell());
    gc.setFont(JFaceResources.getDialogFont());

    ColumnViewerComparator viewerComparator = new ColumnViewerComparator();

    grammarViewer = new TableViewer(table);

    TableColumn column1 = new TableColumn(table, SWT.NONE);
    column1.setText(TMUIMessages.GrammarPreferencePage_column_scopeName);
    int minWidth = computeMinimumColumnWidth(gc, TMUIMessages.GrammarPreferencePage_column_scopeName);
    columnLayout.setColumnData(column1, new ColumnWeightData(2, minWidth, true));
    column1.addSelectionListener(new ColumnSelectionAdapter(column1, grammarViewer, 0, viewerComparator));

    TableColumn column2 = new TableColumn(table, SWT.NONE);
    column2.setText(TMUIMessages.GrammarPreferencePage_column_path);
    minWidth = computeMinimumColumnWidth(gc, TMUIMessages.GrammarPreferencePage_column_path);
    columnLayout.setColumnData(column2, new ColumnWeightData(2, minWidth, true));
    column2.addSelectionListener(new ColumnSelectionAdapter(column2, grammarViewer, 1, viewerComparator));

    TableColumn column3 = new TableColumn(table, SWT.NONE);
    column3.setText(TMUIMessages.GrammarPreferencePage_column_pluginId);
    minWidth = computeMinimumColumnWidth(gc, TMUIMessages.GrammarPreferencePage_column_pluginId);
    columnLayout.setColumnData(column3, new ColumnWeightData(2, minWidth, true));
    column3.addSelectionListener(new ColumnSelectionAdapter(column3, grammarViewer, 2, viewerComparator));

    gc.dispose();

    grammarViewer.setLabelProvider(new GrammarDefinitionLabelProvider());
    grammarViewer.setContentProvider(new GrammarDefinitionContentProvider());
    grammarViewer.setComparator(viewerComparator);

    grammarViewer.addSelectionChangedListener(new ISelectionChangedListener() {

        @Override
        public void selectionChanged(SelectionChangedEvent e) {
            IStructuredSelection selection = grammarViewer.getStructuredSelection();
            if (selection.isEmpty()) {
                return;
            }
            IGrammarDefinition definition = (IGrammarDefinition) (selection).getFirstElement();
            // Update button
            grammarRemoveButton.setEnabled(definition.getPluginId() != null);
            themeAssociationsWidget.getNewButton().setEnabled(false);
            themeAssociationsWidget.getRemoveButton().setEnabled(false);
            // Select grammar
            selectGrammar(definition);
        }

        private void selectGrammar(IGrammarDefinition definition) {
            String scopeName = definition.getScopeName();
            // Fill "General" tab
            fillGeneralTab(scopeName);
            // Fill "Content type" tab
            fillContentTypeTab(scopeName);
            // Fill "Theme" tab
            IThemeAssociation selectedAssociation = fillThemeTab(definition);
            // Fill preview
            fillPreview(scopeName, selectedAssociation);
        }

        private void fillGeneralTab(String scopeName) {
            IGrammar grammar = grammarRegistryManager.getGrammarForScope(scopeName);
            grammarInfoWidget.refresh(grammar);
        }

        private void fillContentTypeTab(String scopeName) {
            // Load the content type binding for the given grammar
            String[] contentTypes = grammarRegistryManager.getContentTypesForScope(scopeName);
            contentTypesWidget.setInput(contentTypes);
        }

        private IThemeAssociation fillThemeTab(IGrammarDefinition definition) {
            IThemeAssociation selectedAssociation = null;
            IStructuredSelection oldSelection = (IStructuredSelection) themeAssociationsWidget.getSelection();
            // Load the theme associations for the given grammar
            IThemeAssociation[] themeAssociations = themeAssociationsWidget.setGrammarDefinition(definition);
            // Try to keep selection
            if (!oldSelection.isEmpty()
                    && Arrays.asList(themeAssociations).contains(oldSelection.getFirstElement())) {
                selectedAssociation = (IThemeAssociation) oldSelection.getFirstElement();
                themeAssociationsWidget.setSelection(oldSelection);
            } else {
                selectedAssociation = themeAssociations != null && themeAssociations.length > 0
                        ? themeAssociations[0]
                        : null;
                if (selectedAssociation != null) {
                    themeAssociationsWidget.setSelection(new StructuredSelection(selectedAssociation));
                }
            }
            return selectedAssociation;
        }

        private void fillPreview(String scopeName, IThemeAssociation selectedAssociation) {
            // Preview the grammar
            IGrammar grammar = grammarRegistryManager.getGrammarForScope(scopeName);
            if (selectedAssociation != null) {
                setPreviewTheme(selectedAssociation.getThemeId());
            }
            previewViewer.setGrammar(grammar);

            // Snippet
            ISnippet[] snippets = snippetManager.getSnippets(scopeName);
            if (snippets != null && snippets.length > 0) {
                // TODO: manage list of snippet for the given scope.
                previewViewer.setText(snippets[0].getContent());
            }
        }

    });

    // Specify default sorting
    table.setSortColumn(column1);
    table.setSortDirection(viewerComparator.getDirection());

    BidiUtils.applyTextDirection(grammarViewer.getControl(), BidiUtils.BTD_DEFAULT);

    Composite buttons = new Composite(parent, SWT.NONE);
    buttons.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING));
    GridLayout layout = new GridLayout();
    layout.marginHeight = 0;
    layout.marginWidth = 0;
    buttons.setLayout(layout);

    grammarNewButton = new Button(buttons, SWT.PUSH);
    grammarNewButton.setText(TMUIMessages.Button_new);
    grammarNewButton.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
    grammarNewButton.addListener(SWT.Selection, new Listener() {

        @Override
        public void handleEvent(Event e) {
            add();
        }

        private void add() {
            // Open import wizard for TextMate grammar.
            TextMateGrammarImportWizard wizard = new TextMateGrammarImportWizard(false);
            wizard.setGrammarRegistryManager(grammarRegistryManager);
            WizardDialog dialog = new WizardDialog(getShell(), wizard);
            if (dialog.open() == Window.OK) {
                // User grammar was saved, refresh the list of grammar and
                // select the created grammar.
                IGrammarDefinition created = wizard.getCreatedDefinition();
                grammarViewer.refresh();
                grammarViewer.setSelection(new StructuredSelection(created));
            }
        }
    });

    grammarRemoveButton = new Button(buttons, SWT.PUSH);
    grammarRemoveButton.setText(TMUIMessages.Button_remove);
    grammarRemoveButton.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
    grammarRemoveButton.addListener(SWT.Selection, new Listener() {

        @Override
        public void handleEvent(Event e) {
            remove();
        }

        private void remove() {
            Collection<IGrammarDefinition> definitions = getSelectedUserGrammarDefinitions();
            if (!definitions.isEmpty()) {
                for (IGrammarDefinition definition : definitions) {
                    grammarRegistryManager.unregisterGrammarDefinition(definition);
                }
                grammarViewer.refresh();
            }
        }
    });
}

From source file:org.eclipse.tm4e.ui.internal.preferences.ThemePreferencePage.java

License:Open Source License

/**
 * Create the theme list content.//from  w w w  .  j  a  v a 2  s.  co  m
 * 
 * @param parent
 */
private void createThemesContent(Composite parent) {
    GridLayout layout;
    Composite tableComposite = new Composite(parent, SWT.NONE);
    GridData data = new GridData(GridData.FILL_BOTH);
    data.widthHint = 360;
    data.heightHint = convertHeightInCharsToPixels(10);
    tableComposite.setLayoutData(data);

    TableColumnLayout columnLayout = new TableColumnLayout();
    tableComposite.setLayout(columnLayout);
    Table table = new Table(tableComposite,
            SWT.BORDER | SWT.MULTI | SWT.FULL_SELECTION | SWT.H_SCROLL | SWT.V_SCROLL);

    table.setHeaderVisible(true);
    table.setLinesVisible(true);

    GC gc = new GC(getShell());
    gc.setFont(JFaceResources.getDialogFont());

    ColumnViewerComparator viewerComparator = new ColumnViewerComparator();

    themeViewer = new TableViewer(table);

    TableColumn column1 = new TableColumn(table, SWT.NONE);
    column1.setText(TMUIMessages.ThemePreferencePage_column_name);
    int minWidth = computeMinimumColumnWidth(gc, TMUIMessages.ThemePreferencePage_column_name);
    columnLayout.setColumnData(column1, new ColumnWeightData(2, minWidth, true));
    column1.addSelectionListener(new ColumnSelectionAdapter(column1, themeViewer, 0, viewerComparator));

    TableColumn column2 = new TableColumn(table, SWT.NONE);
    column2.setText(TMUIMessages.ThemePreferencePage_column_path);
    minWidth = computeMinimumColumnWidth(gc, TMUIMessages.ThemePreferencePage_column_path);
    columnLayout.setColumnData(column2, new ColumnWeightData(2, minWidth, true));
    column2.addSelectionListener(new ColumnSelectionAdapter(column2, themeViewer, 1, viewerComparator));

    TableColumn column3 = new TableColumn(table, SWT.NONE);
    column3.setText(TMUIMessages.ThemePreferencePage_column_pluginId);
    minWidth = computeMinimumColumnWidth(gc, TMUIMessages.ThemePreferencePage_column_pluginId);
    columnLayout.setColumnData(column3, new ColumnWeightData(2, minWidth, true));
    column3.addSelectionListener(new ColumnSelectionAdapter(column3, themeViewer, 2, viewerComparator));

    gc.dispose();

    themeViewer.setLabelProvider(new ThemeLabelProvider());
    themeViewer.setContentProvider(new ThemeContentProvider());
    themeViewer.setComparator(viewerComparator);
    themeViewer.addSelectionChangedListener(new ISelectionChangedListener() {
        @Override
        public void selectionChanged(SelectionChangedEvent e) {
            // Fill Theme details
            ITheme theme = ((ITheme) ((IStructuredSelection) themeViewer.getSelection()).getFirstElement());
            darkThemeButton.setSelection(theme.isDark());
            defaultThemeButton.setSelection(theme.isDefault());
            preview();
        }
    });

    // Specify default sorting
    table.setSortColumn(column1);
    table.setSortDirection(viewerComparator.getDirection());

    BidiUtils.applyTextDirection(themeViewer.getControl(), BidiUtils.BTD_DEFAULT);

    Composite buttons = new Composite(parent, SWT.NONE);
    buttons.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING));
    layout = new GridLayout();
    layout.marginHeight = 0;
    layout.marginWidth = 0;
    buttons.setLayout(layout);

    themeNewButton = new Button(buttons, SWT.PUSH);
    themeNewButton.setText(TMUIMessages.Button_new);
    themeNewButton.setLayoutData(getButtonGridData(themeNewButton));
    themeNewButton.addListener(SWT.Selection, new Listener() {
        @Override
        public void handleEvent(Event e) {
            // add();
        }
    });

    themeRemoveButton = new Button(buttons, SWT.PUSH);
    themeRemoveButton.setText(TMUIMessages.Button_remove);
    themeRemoveButton.setLayoutData(getButtonGridData(themeRemoveButton));
    themeRemoveButton.addListener(SWT.Selection, new Listener() {
        @Override
        public void handleEvent(Event e) {
            // remove();
        }
    });
}