Example usage for org.eclipse.jface.dialogs IDialogConstants HORIZONTAL_SPACING

List of usage examples for org.eclipse.jface.dialogs IDialogConstants HORIZONTAL_SPACING

Introduction

In this page you can find the example usage for org.eclipse.jface.dialogs IDialogConstants HORIZONTAL_SPACING.

Prototype

int HORIZONTAL_SPACING

To view the source code for org.eclipse.jface.dialogs IDialogConstants HORIZONTAL_SPACING.

Click Source Link

Document

Horizontal spacing in dialog units (value 4).

Usage

From source file:org.eclipse.equinox.internal.p2.ui.dialogs.SelectableIUsPage.java

License:Open Source License

private void createSelectButtons(Composite parent) {
    Composite buttonParent = new Composite(parent, SWT.NONE);
    GridLayout gridLayout = new GridLayout();
    gridLayout.numColumns = 3;/*from   www .j  a v  a 2s. co  m*/
    gridLayout.marginWidth = 0;
    gridLayout.horizontalSpacing = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_SPACING);
    buttonParent.setLayout(gridLayout);
    GridData data = new GridData(SWT.FILL, SWT.DEFAULT, true, false);
    buttonParent.setLayoutData(data);

    Button selectAll = new Button(buttonParent, SWT.PUSH);
    selectAll.setText(ProvUIMessages.SelectableIUsPage_Select_All);
    setButtonLayoutData(selectAll);
    selectAll.addListener(SWT.Selection, new Listener() {
        public void handleEvent(Event event) {
            tableViewer.setAllChecked(true);
            updateSelection();
        }
    });

    Button deselectAll = new Button(buttonParent, SWT.PUSH);
    deselectAll.setText(ProvUIMessages.SelectableIUsPage_Deselect_All);
    setButtonLayoutData(deselectAll);
    deselectAll.addListener(SWT.Selection, new Listener() {
        public void handleEvent(Event event) {
            tableViewer.setAllChecked(false);
            updateSelection();
        }
    });

    // dummy to take extra space
    Label dummy = new Label(buttonParent, SWT.NONE);
    data = new GridData(SWT.FILL, SWT.FILL, true, true);
    dummy.setLayoutData(data);

    // separator underneath
    Label sep = new Label(buttonParent, SWT.HORIZONTAL | SWT.SEPARATOR);
    data = new GridData(SWT.FILL, SWT.DEFAULT, true, false);
    data.horizontalSpan = 3;
    sep.setLayoutData(data);
}

From source file:org.eclipse.equinox.p2.ui.RepositoryManipulationPage.java

License:Open Source License

protected Control createContents(Composite parent) {
    display = parent.getDisplay();/*w w  w .j av  a 2  s.  c  o m*/
    // The help refers to the full-blown dialog.  No help if it's read only.
    if (policy.getRepositoriesVisible())
        PlatformUI.getWorkbench().getHelpSystem().setHelp(parent.getShell(),
                IProvHelpContextIds.REPOSITORY_MANIPULATION_DIALOG);

    Composite composite = new Composite(parent, SWT.NONE);
    GridData gd = new GridData(SWT.FILL, SWT.FILL, true, true);
    composite.setLayoutData(gd);

    GridLayout layout = new GridLayout();
    layout.numColumns = policy.getRepositoriesVisible() ? 2 : 1;
    layout.marginWidth = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_MARGIN);
    layout.marginHeight = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_MARGIN);
    layout.horizontalSpacing = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_SPACING);
    layout.verticalSpacing = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_SPACING);
    composite.setLayout(layout);

    // Filter box
    pattern = new Text(composite, SWT.SINGLE | SWT.BORDER | SWT.SEARCH | SWT.CANCEL);
    pattern.getAccessible().addAccessibleListener(new AccessibleAdapter() {
        public void getName(AccessibleEvent e) {
            e.result = DEFAULT_FILTER_TEXT;
        }
    });
    pattern.setText(DEFAULT_FILTER_TEXT);
    pattern.selectAll();
    pattern.addModifyListener(new ModifyListener() {
        public void modifyText(ModifyEvent e) {
            applyFilter();
        }
    });

    pattern.addKeyListener(new KeyAdapter() {
        public void keyPressed(KeyEvent e) {
            if (e.keyCode == SWT.ARROW_DOWN) {
                if (table.getItemCount() > 0) {
                    table.setFocus();
                } else if (e.character == SWT.CR) {
                    return;
                }
            }
        }
    });

    pattern.addFocusListener(new FocusAdapter() {
        public void focusGained(FocusEvent e) {
            display.asyncExec(new Runnable() {
                public void run() {
                    if (!pattern.isDisposed()) {
                        if (DEFAULT_FILTER_TEXT.equals(pattern.getText().trim())) {
                            pattern.selectAll();
                        }
                    }
                }
            });
        }
    });
    gd = new GridData(SWT.FILL, SWT.FILL, true, false);
    pattern.setLayoutData(gd);

    // spacer to fill other column
    if (policy.getRepositoriesVisible())
        new Label(composite, SWT.NONE);

    // Table of available repositories
    table = new Table(composite,
            SWT.CHECK | SWT.MULTI | SWT.FULL_SELECTION | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER);
    repositoryViewer = new CheckboxTableViewer(table);

    // Key listener for delete
    table.addKeyListener(new KeyAdapter() {
        public void keyPressed(KeyEvent e) {
            if (e.keyCode == SWT.DEL) {
                removeRepositories();
            }
        }
    });
    setTableColumns();
    CopyUtils.activateCopy(this, table);

    repositoryViewer.setComparer(new ProvElementComparer());
    comparator = new MetadataRepositoryElementComparator(RepositoryDetailsLabelProvider.COL_NAME);
    repositoryViewer.setComparator(comparator);
    filter = new MetadataRepositoryPatternFilter();
    repositoryViewer.setFilters(new ViewerFilter[] { filter });
    // We don't need a deferred content provider because we are caching local results before
    // actually querying
    repositoryViewer.setContentProvider(new ProvElementContentProvider());
    labelProvider = new RepositoryDetailsLabelProvider();
    repositoryViewer.setLabelProvider(labelProvider);

    // Edit the nickname
    repositoryViewer.setCellModifier(new ICellModifier() {
        public boolean canModify(Object element, String property) {
            return element instanceof MetadataRepositoryElement;
        }

        public Object getValue(Object element, String property) {
            return ((MetadataRepositoryElement) element).getName();
        }

        public void modify(Object element, String property, Object value) {
            if (value != null && value.toString().length() >= 0) {
                MetadataRepositoryElement repo;
                if (element instanceof Item) {
                    repo = (MetadataRepositoryElement) ((Item) element).getData();
                } else if (element instanceof MetadataRepositoryElement) {
                    repo = (MetadataRepositoryElement) element;
                } else {
                    return;
                }
                if (!value.toString().equals(repo.getName())) {
                    changed = true;
                    repo.setNickname(value.toString());
                    if (comparator.getSortKey() == RepositoryDetailsLabelProvider.COL_NAME)
                        repositoryViewer.refresh(true);
                    else
                        repositoryViewer.update(repo, null);
                }
            }
        }

    });
    repositoryViewer.setColumnProperties(new String[] { "nickname" }); //$NON-NLS-1$
    repositoryViewer.setCellEditors(new CellEditor[] { new TextCellEditor(repositoryViewer.getTable()) });

    repositoryViewer.addSelectionChangedListener(new ISelectionChangedListener() {
        public void selectionChanged(SelectionChangedEvent event) {
            if (policy.getRepositoriesVisible())
                validateButtons();
            setDetails();
        }
    });

    repositoryViewer.setCheckStateProvider(new ICheckStateProvider() {
        public boolean isChecked(Object element) {
            return ((MetadataRepositoryElement) element).isEnabled();
        }

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

    repositoryViewer.addCheckStateListener(new ICheckStateListener() {
        public void checkStateChanged(CheckStateChangedEvent event) {
            MetadataRepositoryElement element = (MetadataRepositoryElement) event.getElement();
            element.setEnabled(event.getChecked());
            // paranoid that an equal but not identical element was passed in as the selection.
            // update the cache map just in case.
            getInput().put(element);
            // update the viewer to show the change
            updateForEnablementChange(new MetadataRepositoryElement[] { element });
        }
    });

    // Input last
    repositoryViewer.setInput(getInput());

    GridData data = new GridData(SWT.FILL, SWT.FILL, true, true);
    data.widthHint = convertWidthInCharsToPixels(ILayoutConstants.DEFAULT_TABLE_WIDTH);
    data.heightHint = convertHeightInCharsToPixels(ILayoutConstants.DEFAULT_TABLE_HEIGHT);
    table.setLayoutData(data);

    // Drop targets and vertical buttons only if repository manipulation is provided.
    if (policy.getRepositoriesVisible()) {
        DropTarget target = new DropTarget(table, DND.DROP_MOVE | DND.DROP_COPY | DND.DROP_LINK);
        target.setTransfer(new Transfer[] { URLTransfer.getInstance(), FileTransfer.getInstance() });
        target.addDropListener(new RepositoryManipulatorDropTarget(ui, table));

        // Vertical buttons
        Composite verticalButtonBar = createVerticalButtonBar(composite);
        data = new GridData(SWT.FILL, SWT.FILL, false, false);
        data.verticalAlignment = SWT.TOP;
        data.verticalIndent = 0;
        verticalButtonBar.setLayoutData(data);
        listener = getViewerProvisioningListener();

        ProvUI.getProvisioningEventBus(ui.getSession()).addListener(listener);
        composite.addDisposeListener(new DisposeListener() {
            public void widgetDisposed(DisposeEvent event) {
                ProvUI.getProvisioningEventBus(ui.getSession()).removeListener(listener);
            }
        });

        validateButtons();
    }

    // Details area
    details = new Text(composite, SWT.READ_ONLY | SWT.WRAP);
    data = new GridData(SWT.FILL, SWT.FILL, true, false);
    data.heightHint = convertHeightInCharsToPixels(ILayoutConstants.DEFAULT_SITEDETAILS_HEIGHT);

    details.setLayoutData(data);

    Dialog.applyDialogFont(composite);
    return composite;
}

From source file:org.eclipse.gmf.internal.graphdef.codegen.ui.FigureGeneratorOptionsDialog.java

License:Open Source License

protected Control createDialogArea(Composite parent) {
    Composite result = (Composite) super.createDialogArea(parent);
    GridLayout layout = new GridLayout();
    layout.marginHeight = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_MARGIN);
    layout.marginWidth = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_MARGIN);
    layout.verticalSpacing = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_SPACING);
    layout.horizontalSpacing = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_SPACING);
    result.setLayout(layout);/* www  .  j av  a 2  s.c  o  m*/
    createControls(result);
    setTitle("Generator Model Options");
    warnLiteVerstionDoesNotSupportMapMode();
    Dialog.applyDialogFont(result);
    return result;
}

From source file:org.eclipse.jpt.jpa.ui.internal.prefs.JpaPreferencesPage.java

License:Open Source License

/**
 * {@inheritDoc}//from  w w  w  .  ja v a2s  .co  m
 */
@Override
protected Control createContents(Composite parent) {
    this.initializeDialogUnits(parent);

    parent = new Composite(parent, SWT.NONE);
    GridLayout layout = new GridLayout(1, false);
    layout.marginWidth = 0;
    layout.marginHeight = 0;
    layout.verticalSpacing = this.convertVerticalDLUsToPixels(10);
    layout.horizontalSpacing = this.convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_SPACING);
    parent.setLayout(layout);

    Label description = new Label(parent, SWT.NONE);
    description.setText(JptJpaUiMessages.JpaPreferencesPage_description);

    this.addEntityGenGroup(parent);
    this.addJpqlEditorGroup(parent);

    Dialog.applyDialogFont(parent);
    return parent;
}

From source file:org.eclipse.jpt.jpa.ui.internal.prefs.JptPreferencesPage.java

License:Open Source License

@Override
protected Control createContents(Composite parent) {

    Composite container = new Composite(parent, SWT.NONE);
    GridLayout layout = new GridLayout();
    layout.marginHeight = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_MARGIN);
    layout.marginWidth = 0;//from w w  w. j a va  2 s  .  co  m
    layout.verticalSpacing = convertVerticalDLUsToPixels(10);
    layout.horizontalSpacing = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_SPACING);
    container.setLayout(layout);

    layout = new GridLayout();
    layout.numColumns = 2;

    Group dontAskGroup = new Group(container, SWT.NONE);
    dontAskGroup.setLayout(layout);
    dontAskGroup.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
    dontAskGroup.setText(JptJpaUiMessages.JptPreferencesPage_DoNotShowDialogs);

    Label label = new Label(dontAskGroup, SWT.WRAP);
    label.setText(JptJpaUiMessages.JptPreferencesPage_DoNotShowText);
    GridData data = new GridData(GridData.FILL, GridData.CENTER, true, false);
    data.widthHint = convertVerticalDLUsToPixels(50);
    label.setLayoutData(data);

    Button button = new Button(dontAskGroup, SWT.PUSH);
    button.setText(JptJpaUiMessages.JptPreferencesPage_ClearButtonText);
    button.setLayoutData(new GridData(GridData.FILL, GridData.BEGINNING, false, false));
    button.addSelectionListener(new SelectionListener() {
        public void widgetSelected(SelectionEvent e) {
            unhideAllDialogs();
        }

        public void widgetDefaultSelected(SelectionEvent e) {
            unhideAllDialogs();
        }
    });

    return container;
}

From source file:org.eclipse.jsch.internal.ui.preference.ExportDialog.java

License:Open Source License

protected Control createDialogArea(Composite parent) {
    initializeDialogUnits(parent);/*w  w  w. ja va2  s  .c  o m*/
    Composite main = new Composite(parent, SWT.NONE);
    GridLayout layout = new GridLayout();
    layout.numColumns = 2;
    layout.marginHeight = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_MARGIN);
    layout.marginWidth = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_MARGIN);
    layout.verticalSpacing = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_SPACING);
    layout.horizontalSpacing = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_SPACING);
    main.setLayout(layout);
    main.setLayoutData(new GridData(GridData.FILL_BOTH));

    if (message != null) {
        Label messageLabel = new Label(main, SWT.WRAP);
        messageLabel.setText(message);
        GridData data = new GridData(GridData.FILL_HORIZONTAL);
        data.horizontalSpan = 2;
        messageLabel.setLayoutData(data);
    }

    createTargetFields(main);
    Dialog.applyDialogFont(main);
    return main;
}

From source file:org.eclipse.jsch.internal.ui.preference.PassphraseDialog.java

License:Open Source License

protected Control createDialogArea(Composite parent) {
    initializeDialogUnits(parent);/*w w  w  .  j  a v a2  s .co  m*/
    Composite main = new Composite(parent, SWT.NONE);

    GridLayout layout = new GridLayout();
    layout.numColumns = 3;
    layout.marginHeight = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_MARGIN);
    layout.marginWidth = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_MARGIN);
    layout.verticalSpacing = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_SPACING);
    layout.horizontalSpacing = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_SPACING);
    main.setLayout(layout);
    main.setLayoutData(new GridData(GridData.FILL_BOTH));

    if (message != null) {
        Label messageLabel = new Label(main, SWT.WRAP);
        messageLabel.setText(message);
        GridData data = new GridData(GridData.FILL_HORIZONTAL);
        data.horizontalSpan = 3;
        messageLabel.setLayoutData(data);
    }

    createPassphraseFields(main);
    Dialog.applyDialogFont(main);
    return main;
}

From source file:org.eclipse.jsch.internal.ui.preference.PreferencePage.java

License:Open Source License

private Control createGeneralPage(Composite parent) {
    Composite group = new Composite(parent, SWT.NULL);
    GridLayout layout = new GridLayout();
    layout.numColumns = 3;/*from   w w w . j  a  va 2s. c om*/
    layout.marginHeight = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_MARGIN);
    layout.marginWidth = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_MARGIN);
    layout.verticalSpacing = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_SPACING);
    layout.horizontalSpacing = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_SPACING);
    group.setLayout(layout);
    GridData data = new GridData();
    data.horizontalAlignment = GridData.FILL;
    group.setLayoutData(data);

    ssh2HomeLabel = new Label(group, SWT.NONE);
    ssh2HomeLabel.setText(Messages.CVSSSH2PreferencePage_23);

    ssh2HomeText = new Text(group, SWT.SINGLE | SWT.BORDER);
    ssh2HomeText.setFont(group.getFont());
    GridData gd = new GridData(GridData.FILL_HORIZONTAL);
    gd.horizontalSpan = 1;
    ssh2HomeText.setLayoutData(gd);

    ssh2HomeBrowse = new Button(group, SWT.NULL);
    ssh2HomeBrowse.setText(Messages.CVSSSH2PreferencePage_24);
    gd = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
    gd.horizontalSpan = 1;
    ssh2HomeBrowse.setLayoutData(gd);

    createSpacer(group, 3);

    privateKeyLabel = new Label(group, SWT.NONE);
    privateKeyLabel.setText(Messages.CVSSSH2PreferencePage_25);

    privateKeyText = new Text(group, SWT.SINGLE | SWT.BORDER);
    privateKeyText.setFont(group.getFont());
    gd = new GridData(GridData.FILL_HORIZONTAL);
    gd.horizontalSpan = 1;
    privateKeyText.setLayoutData(gd);

    privateKeyAdd = new Button(group, SWT.NULL);
    privateKeyAdd.setText(Messages.CVSSSH2PreferencePage_26);
    gd = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
    gd.horizontalSpan = 1;
    privateKeyAdd.setLayoutData(gd);

    ssh2HomeBrowse.addSelectionListener(new SelectionAdapter() {
        public void widgetSelected(SelectionEvent e) {
            String home = ssh2HomeText.getText();

            if (!new File(home).exists()) {
                while (true) {
                    int foo = home.lastIndexOf(java.io.File.separator, home.length());
                    if (foo == -1)
                        break;
                    home = home.substring(0, foo);
                    if (new File(home).exists())
                        break;
                }
            }

            DirectoryDialog dd = new DirectoryDialog(getShell());
            dd.setFilterPath(home);
            dd.setMessage(Messages.CVSSSH2PreferencePage_27);
            String dir = dd.open();
            if (dir == null) { // cancel
                return;
            }
            ssh2HomeText.setText(dir);
        }
    });

    privateKeyAdd.addSelectionListener(new SelectionAdapter() {
        public void widgetSelected(SelectionEvent e) {
            String home = ssh2HomeText.getText();

            FileDialog fd = new FileDialog(getShell(), SWT.OPEN | SWT.MULTI);
            fd.setFilterPath(home);
            Object o = fd.open();
            if (o == null) { // cancel
                return;
            }
            String[] files = fd.getFileNames();
            String keys = privateKeyText.getText();
            String dir = fd.getFilterPath();
            if (dir.equals(home)) {
                dir = ""; //$NON-NLS-1$
            } else {
                dir += java.io.File.separator;
            }

            for (int i = 0; i < files.length; i++) {
                String foo = files[i];
                if (keys.length() != 0)
                    keys = keys + ","; //$NON-NLS-1$
                keys = keys + dir + foo;
            }
            privateKeyText.setText(keys);
        }
    });

    return group;
}

From source file:org.eclipse.jsch.internal.ui.preference.PreferencePage.java

License:Open Source License

private Control createKeyManagementPage(Composite parent) {
    int columnSpan = 3;
    Composite group = new Composite(parent, SWT.NULL);
    GridLayout layout = new GridLayout();
    layout.numColumns = 3;/*  w w  w .  ja v a2s. c om*/
    layout.marginHeight = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_MARGIN);
    layout.marginWidth = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_MARGIN);
    layout.verticalSpacing = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_SPACING);
    layout.horizontalSpacing = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_SPACING);
    group.setLayout(layout);
    GridData gd = new GridData();
    gd.horizontalAlignment = GridData.FILL;
    group.setLayoutData(gd);

    keyGenerateDSA = new Button(group, SWT.NULL);
    keyGenerateDSA.setText(Messages.CVSSSH2PreferencePage_131);
    gd = new GridData();
    gd.horizontalSpan = 1;
    keyGenerateDSA.setLayoutData(gd);

    keyGenerateRSA = new Button(group, SWT.NULL);
    keyGenerateRSA.setText(Messages.CVSSSH2PreferencePage_132);
    gd = new GridData();
    gd.horizontalSpan = 1;
    keyGenerateRSA.setLayoutData(gd);

    keyLoad = new Button(group, SWT.NULL);
    keyLoad.setText(Messages.CVSSSH2PreferencePage_128);
    gd = new GridData();
    gd.horizontalSpan = 1;
    keyLoad.setLayoutData(gd);

    publicKeylabel = new Label(group, SWT.NONE);
    publicKeylabel.setText(Messages.CVSSSH2PreferencePage_39);
    gd = new GridData();
    gd.horizontalSpan = columnSpan;
    publicKeylabel.setLayoutData(gd);

    publicKeyText = new Text(group, SWT.MULTI | SWT.BORDER | SWT.V_SCROLL | SWT.WRAP | SWT.LEFT_TO_RIGHT);
    publicKeyText.setText(""); //$NON-NLS-1$
    publicKeyText.setEditable(false);
    gd = new GridData();
    gd.horizontalSpan = columnSpan;
    gd.horizontalAlignment = GridData.FILL;
    gd.verticalAlignment = GridData.FILL;
    gd.grabExcessHorizontalSpace = true;
    gd.grabExcessVerticalSpace = true;
    publicKeyText.setLayoutData(gd);

    keyFingerPrintLabel = new Label(group, SWT.NONE);
    keyFingerPrintLabel.setText(Messages.CVSSSH2PreferencePage_41);
    keyFingerPrintText = new Text(group, SWT.SINGLE | SWT.BORDER | SWT.LEFT_TO_RIGHT);
    keyFingerPrintText.setFont(group.getFont());
    keyFingerPrintText.setEditable(false);
    gd = new GridData(GridData.FILL_HORIZONTAL);
    gd.horizontalSpan = 2;
    keyFingerPrintText.setLayoutData(gd);

    keyCommentLabel = new Label(group, SWT.NONE);
    keyCommentLabel.setText(Messages.CVSSSH2PreferencePage_42);
    keyCommentText = new Text(group, SWT.SINGLE | SWT.BORDER);
    keyCommentText.setFont(group.getFont());
    gd = new GridData(GridData.FILL_HORIZONTAL);
    gd.horizontalSpan = 2;
    keyCommentText.setLayoutData(gd);

    keyCommentText.addModifyListener(new ModifyListener() {
        public void modifyText(ModifyEvent e) {
            if (kpair == null)
                return;
            try {
                ByteArrayOutputStream out = new ByteArrayOutputStream();
                kpairComment = keyCommentText.getText();
                kpair.writePublicKey(out, kpairComment);
                out.close();
                publicKeyText.setText(out.toString());
            } catch (IOException ee) {
                // Ignore
            }
        }
    });

    keyPassphrase1Label = new Label(group, SWT.NONE);
    keyPassphrase1Label.setText(Messages.CVSSSH2PreferencePage_43);
    keyPassphrase1Text = new Text(group, SWT.SINGLE | SWT.BORDER);
    keyPassphrase1Text.setFont(group.getFont());
    keyPassphrase1Text.setEchoChar('*');
    gd = new GridData(GridData.FILL_HORIZONTAL);
    gd.horizontalSpan = 2;
    keyPassphrase1Text.setLayoutData(gd);

    keyPassphrase2Label = new Label(group, SWT.NONE);
    keyPassphrase2Label.setText(Messages.CVSSSH2PreferencePage_44);
    keyPassphrase2Text = new Text(group, SWT.SINGLE | SWT.BORDER);
    keyPassphrase2Text.setFont(group.getFont());
    keyPassphrase2Text.setEchoChar('*');
    gd = new GridData(GridData.FILL_HORIZONTAL);
    gd.horizontalSpan = 2;
    keyPassphrase2Text.setLayoutData(gd);

    keyPassphrase1Text.addModifyListener(new ModifyListener() {
        public void modifyText(ModifyEvent e) {
            String pass1 = keyPassphrase1Text.getText();
            String pass2 = keyPassphrase2Text.getText();
            if (kpair != null && pass1.equals(pass2)) {
                saveKeyPair.setEnabled(true);
            } else {
                saveKeyPair.setEnabled(false);
            }
            if (pass2.length() == 0) {
                setErrorMessage(null);
                return;
            }
            if (pass1.equals(pass2)) {
                setErrorMessage(null);
            } else {
                setErrorMessage(Messages.CVSSSH2PreferencePage_48);
            }
        }
    });

    keyPassphrase2Text.addModifyListener(new ModifyListener() {
        public void modifyText(ModifyEvent e) {
            String pass1 = keyPassphrase1Text.getText();
            String pass2 = keyPassphrase2Text.getText();
            if (kpair != null && pass1.equals(pass2)) {
                saveKeyPair.setEnabled(true);
            } else {
                saveKeyPair.setEnabled(false);
            }
            if (pass2.length() < pass1.length()) {
                if (pass1.startsWith(pass2)) {
                    setErrorMessage(null);
                } else {
                    setErrorMessage(Messages.CVSSSH2PreferencePage_48);
                }
                return;
            }
            if (pass1.equals(pass2)) {
                setErrorMessage(null);
            } else {
                setErrorMessage(Messages.CVSSSH2PreferencePage_48);
            }
        }
    });

    keyPassphrase2Text.addFocusListener(new FocusListener() {
        public void focusGained(FocusEvent e) {
            String pass1 = keyPassphrase1Text.getText();
            String pass2 = keyPassphrase2Text.getText();
            if (pass2.length() < pass1.length()) {
                if (pass1.startsWith(pass2)) {
                    setErrorMessage(null);
                } else {
                    setErrorMessage(Messages.CVSSSH2PreferencePage_48);
                }
                return;
            }
            if (pass1.equals(pass2)) {
                setErrorMessage(null);
            } else {
                setErrorMessage(Messages.CVSSSH2PreferencePage_48);
            }
        }

        public void focusLost(FocusEvent e) {
            String pass1 = keyPassphrase1Text.getText();
            String pass2 = keyPassphrase2Text.getText();
            if (pass1.equals(pass2)) {
                setErrorMessage(null);
            } else {
                setErrorMessage(Messages.CVSSSH2PreferencePage_48);
            }
        }
    });

    Composite buttons = new Composite(group, SWT.NONE);
    layout = new GridLayout(2, true);
    layout.marginWidth = 0;
    layout.marginHeight = 0;
    layout.horizontalSpacing = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_SPACING);
    buttons.setLayout(layout);
    gd = new GridData(GridData.HORIZONTAL_ALIGN_END);
    gd.horizontalSpan = columnSpan;
    buttons.setLayoutData(gd);

    keyExport = new Button(buttons, SWT.NULL);
    keyExport.setText(Messages.CVSSSH2PreferencePage_105);
    gd = new GridData(GridData.FILL_BOTH);
    keyExport.setLayoutData(gd);

    saveKeyPair = new Button(buttons, SWT.NULL);
    saveKeyPair.setText(Messages.CVSSSH2PreferencePage_45);
    gd = new GridData(GridData.FILL_BOTH);
    saveKeyPair.setLayoutData(gd);

    SelectionAdapter keygenadapter = new SelectionAdapter() {
        public void widgetSelected(SelectionEvent e) {
            boolean ok = true;
            String _type = ""; //$NON-NLS-1$

            try {
                int type = 0;
                if (e.widget == keyGenerateDSA) {
                    type = KeyPair.DSA;
                    _type = IConstants.DSA;
                } else if (e.widget == keyGenerateRSA) {
                    type = KeyPair.RSA;
                    _type = IConstants.RSA;
                } else {
                    return;
                }

                final KeyPair[] _kpair = new KeyPair[1];
                final int __type = type;
                final JSchException[] _e = new JSchException[1];
                BusyIndicator.showWhile(getShell().getDisplay(), new Runnable() {
                    public void run() {
                        try {
                            _kpair[0] = KeyPair.genKeyPair(getJSch(), __type);
                        } catch (JSchException e) {
                            _e[0] = e;
                        }
                    }
                });
                if (_e[0] != null) {
                    throw _e[0];
                }
                kpair = _kpair[0];

                ByteArrayOutputStream out = new ByteArrayOutputStream();
                kpairComment = _type + "-1024"; //$NON-NLS-1$
                kpair.writePublicKey(out, kpairComment);
                out.close();
                publicKeyText.setText(out.toString());
                keyFingerPrintText.setText(kpair.getFingerPrint());
                keyCommentText.setText(kpairComment);
                keyPassphrase1Text.setText(""); //$NON-NLS-1$
                keyPassphrase2Text.setText(""); //$NON-NLS-1$
                updateControls();
            } catch (IOException ee) {
                ok = false;
            } catch (JSchException ee) {
                ok = false;
            }
            if (!ok) {
                MessageDialog.openError(getShell(), Messages.CVSSSH2PreferencePage_error,
                        Messages.CVSSSH2PreferencePage_47);
            }
        }
    };
    keyGenerateDSA.addSelectionListener(keygenadapter);
    keyGenerateRSA.addSelectionListener(keygenadapter);

    keyLoad.addSelectionListener(new SelectionAdapter() {
        public void widgetSelected(SelectionEvent e) {
            boolean ok = true;
            String home = ssh2HomeText.getText();
            FileDialog fd = new FileDialog(getShell(), SWT.OPEN);
            fd.setFilterPath(home);
            Object o = fd.open();
            if (o == null) { // cancel
                return;
            }
            String pkey = fd.getFileName();
            String pkeyab = (new File(fd.getFilterPath(), pkey)).getAbsolutePath();
            try {
                KeyPair _kpair = KeyPair.load(getJSch(), pkeyab);
                PassphrasePrompt prompt = null;
                while (_kpair.isEncrypted()) {
                    if (prompt == null) {
                        prompt = new PassphrasePrompt(
                                NLS.bind(Messages.CVSSSH2PreferencePage_126, new String[] { pkey }));
                    }
                    Display.getDefault().syncExec(prompt);
                    String passphrase = prompt.getPassphrase();
                    if (passphrase == null)
                        break;
                    if (_kpair.decrypt(passphrase)) {
                        break;
                    }
                    MessageDialog.openError(getShell(), Messages.CVSSSH2PreferencePage_error,
                            NLS.bind(Messages.CVSSSH2PreferencePage_129, new String[] { pkey }));
                }
                if (_kpair.isEncrypted()) {
                    return;
                }
                kpair = _kpair;
                String _type = (kpair.getKeyType() == KeyPair.DSA) ? IConstants.DSA : IConstants.RSA;
                kpairComment = _type + "-1024"; //$NON-NLS-1$

                // TODO Bug 351094 The comment should be from kpair object,
                // but the JSch API does not provided such a method.
                // In the version 0.1.45, JSch will support such a method,
                // and the following code should be replaced with it at that time.
                java.io.FileInputStream fis = null;
                try {
                    java.io.File f = new java.io.File(pkeyab + ".pub"); //$NON-NLS-1$
                    int i = 0;
                    fis = new java.io.FileInputStream(f);
                    byte[] buf = new byte[(int) f.length()];
                    while (i < buf.length) {
                        int j = fis.read(buf, i, buf.length - i);
                        if (j <= 0)
                            break;
                        i += j;
                    }
                    String pubkey = new String(buf);
                    if (pubkey.indexOf(' ') > 0 && pubkey.indexOf(' ', pubkey.indexOf(' ') + 1) > 0) {
                        int j = pubkey.indexOf(' ', pubkey.indexOf(' ') + 1) + 1;
                        kpairComment = pubkey.substring(j);
                        if (kpairComment.indexOf('\n') > 0) {
                            kpairComment = kpairComment.substring(0, kpairComment.indexOf('\n'));
                        }
                    }
                } catch (IOException ioe) {
                    // ignore if public-key does not exist.
                } finally {
                    if (fis != null)
                        fis.close();
                }

                ByteArrayOutputStream out = new ByteArrayOutputStream();

                kpair.writePublicKey(out, kpairComment);
                out.close();
                publicKeyText.setText(out.toString());
                keyFingerPrintText.setText(kpair.getFingerPrint());
                keyCommentText.setText(kpairComment);
                keyPassphrase1Text.setText(""); //$NON-NLS-1$
                keyPassphrase2Text.setText(""); //$NON-NLS-1$
                updateControls();
            } catch (IOException ee) {
                ok = false;
            } catch (JSchException ee) {
                ok = false;
            }
            if (!ok) {
                MessageDialog.openError(getShell(), Messages.CVSSSH2PreferencePage_error,
                        Messages.CVSSSH2PreferencePage_130);
            }
        }
    });

    keyExport.addSelectionListener(new SelectionAdapter() {
        public void widgetSelected(SelectionEvent e) {
            if (kpair == null)
                return;

            setErrorMessage(null);

            final String[] target = new String[1];
            final String title = Messages.CVSSSH2PreferencePage_106;
            final String message = Messages.CVSSSH2PreferencePage_107;
            Display.getDefault().syncExec(new Runnable() {
                public void run() {
                    Display display = Display.getCurrent();
                    Shell shell = new Shell(display);
                    ExportDialog dialog = new ExportDialog(shell, title, message);
                    dialog.open();
                    shell.dispose();
                    target[0] = dialog.getTarget();
                }
            });
            if (target[0] == null) {
                return;
            }
            String user = ""; //$NON-NLS-1$
            String host = ""; //$NON-NLS-1$
            int port = 22;

            if (target[0].indexOf('@') > 0) {
                user = target[0].substring(0, target[0].indexOf('@'));
                host = target[0].substring(target[0].indexOf('@') + 1);
            }
            if (host.indexOf(':') > 0) {
                try {
                    port = Integer.parseInt(host.substring(host.indexOf(':') + 1));
                } catch (NumberFormatException ee) {
                    port = -1;
                }
                host = host.substring(0, host.indexOf(':'));
            }

            if (user.length() == 0 || host.length() == 0 || port == -1) {
                setErrorMessage(NLS.bind(Messages.CVSSSH2PreferencePage_108, new String[] { target[0] }));
                return;
            }

            String options = ""; //$NON-NLS-1$
            try {
                ByteArrayOutputStream bos = new ByteArrayOutputStream();
                if (options.length() != 0) {
                    try {
                        bos.write((options + " ").getBytes()); //$NON-NLS-1$
                    } catch (IOException eeee) {
                        // Ignore
                    }
                }
                kpair.writePublicKey(bos, kpairComment);
                bos.close();
                export_via_sftp(user, host, port, /* ".ssh/authorized_keys", //$NON-NLS-1$ */
                        bos.toByteArray());
            } catch (IOException ee) {
                // Ignore
            } catch (JSchException ee) {
                setErrorMessage(Messages.CVSSSH2PreferencePage_111);
            }
        }
    });

    saveKeyPair.addSelectionListener(new SelectionAdapter() {
        public void widgetSelected(SelectionEvent e) {
            if (kpair == null)
                return;

            String pass = keyPassphrase1Text.getText();
            /*
             * if(!pass.equals(keyPassphrase2Text.getText())){
             * setErrorMessage(Policy.bind("CVSSSH2PreferencePage.48"));
             * //$NON-NLS-1$ return; }
             */
            if (pass.length() == 0) {
                if (!MessageDialog.openConfirm(getShell(), Messages.CVSSSH2PreferencePage_confirmation,
                        Messages.CVSSSH2PreferencePage_49)) {
                    return;
                }
            }

            kpair.setPassphrase(pass);

            String home = ssh2HomeText.getText();

            File _home = new File(home);

            if (!_home.exists()) {
                if (!MessageDialog.openConfirm(getShell(), Messages.CVSSSH2PreferencePage_confirmation,
                        NLS.bind(Messages.CVSSSH2PreferencePage_50, new String[] { home }))) {
                    return;
                }
                if (!_home.mkdirs()) {
                    setErrorMessage(Messages.CVSSSH2PreferencePage_100 + home);
                    return;
                }
            }

            FileDialog fd = new FileDialog(getShell(), SWT.SAVE);
            fd.setFilterPath(home);
            String file = (kpair.getKeyType() == KeyPair.RSA) ? "id_rsa" : "id_dsa"; //$NON-NLS-1$ //$NON-NLS-2$
            fd.setFileName(file);
            file = fd.open();
            if (file == null) { // cancel
                return;
            }

            if (new File(file).exists()) {
                if (!MessageDialog.openConfirm(getShell(), Messages.CVSSSH2PreferencePage_confirmation, // 
                        NLS.bind(Messages.CVSSSH2PreferencePage_53, new String[] { file }))) {
                    return;
                }
            }

            boolean ok = true;
            try {
                kpair.writePrivateKey(file);
                kpair.writePublicKey(file + ".pub", kpairComment); //$NON-NLS-1$
            } catch (Exception ee) {
                ok = false;
            }

            if (ok) {
                MessageDialog.openInformation(getShell(), Messages.CVSSSH2PreferencePage_information,
                        Messages.CVSSSH2PreferencePage_55 + "\n" + //$NON-NLS-1$
                Messages.CVSSSH2PreferencePage_57 + file + "\n" + //$NON-NLS-1$
                Messages.CVSSSH2PreferencePage_59 + file + ".pub"); //$NON-NLS-1$
            } else {
                return;
            }

            // The generated key should be added to privateKeyText.

            String dir = fd.getFilterPath();
            File mypkey = new java.io.File(dir, fd.getFileName());
            String pkeys = privateKeyText.getText();

            // Check if the generated key has been included in pkeys?
            String[] pkeysa = pkeys.split(","); //$NON-NLS-1$
            for (int i = 0; i < pkeysa.length; i++) {
                File pkey = new java.io.File(pkeysa[i]);
                if (!pkey.isAbsolute()) {
                    pkey = new java.io.File(home, pkeysa[i]);
                }
                if (pkey.equals(mypkey))
                    return;
            }

            if (dir.equals(home)) {
                dir = ""; //$NON-NLS-1$
            } else {
                dir += java.io.File.separator;
            }
            if (pkeys.length() > 0)
                pkeys += ","; //$NON-NLS-1$
            pkeys = pkeys + dir + fd.getFileName();
            privateKeyText.setText(pkeys);
        }
    });

    return group;
}

From source file:org.eclipse.jsch.internal.ui.preference.PreferencePage.java

License:Open Source License

private Control createHostKeyManagementPage(Composite parent) {
    Composite group = new Composite(parent, SWT.NULL);
    GridLayout layout = new GridLayout();
    layout.marginHeight = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_MARGIN);
    layout.marginWidth = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_MARGIN);
    layout.verticalSpacing = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_SPACING);
    layout.horizontalSpacing = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_SPACING);
    layout.numColumns = 2;/*from  www.j av  a2 s .  c o  m*/
    group.setLayout(layout);
    GridData gd = new GridData();
    gd.horizontalAlignment = GridData.FILL;
    gd.verticalAlignment = GridData.FILL;
    group.setLayoutData(gd);

    Label label = new Label(group, SWT.NONE);
    label.setText(Messages.CVSSSH2PreferencePage_139);
    gd = new GridData();
    gd.horizontalSpan = 2;
    label.setLayoutData(gd);

    viewer = new TableViewer(group, SWT.MULTI | SWT.FULL_SELECTION | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER);
    Table table = viewer.getTable();
    new TableEditor(table);
    table.setHeaderVisible(true);
    table.setLinesVisible(true);
    gd = new GridData(GridData.FILL_BOTH);
    gd.widthHint = convertWidthInCharsToPixels(30);
    /*
     * The hardcoded hint does not look elegant, but in reality it does not make
     * anything bound to this 100-pixel value, because in any case the tree on
     * the left is taller and that's what really determines the height.
     */
    gd.heightHint = 100;
    table.setLayoutData(gd);
    table.addListener(SWT.Selection, new Listener() {
        public void handleEvent(Event e) {
            handleSelection();
        }
    });
    // Create the table columns
    new TableColumn(table, SWT.NULL);
    new TableColumn(table, SWT.NULL);
    new TableColumn(table, SWT.NULL);
    TableColumn[] columns = table.getColumns();
    columns[0].setText(Messages.CVSSSH2PreferencePage_134);
    columns[1].setText(Messages.CVSSSH2PreferencePage_135);
    columns[2].setText(Messages.CVSSSH2PreferencePage_136);
    viewer.setColumnProperties(new String[] { Messages.CVSSSH2PreferencePage_134, // 
            Messages.CVSSSH2PreferencePage_135, // 
            Messages.CVSSSH2PreferencePage_136 });
    viewer.setLabelProvider(new TableLabelProvider());
    viewer.setContentProvider(new IStructuredContentProvider() {
        public void dispose() {
            // nothing to do
        }

        public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
            // nothing to do
        }

        public Object[] getElements(Object inputElement) {
            if (inputElement == null)
                return null;
            return (Object[]) inputElement;
        }
    });
    TableLayout tl = new TableLayout();
    tl.addColumnData(new ColumnWeightData(30));
    tl.addColumnData(new ColumnWeightData(20));
    tl.addColumnData(new ColumnWeightData(70));
    table.setLayout(tl);

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

    removeHostKeyButton = new Button(buttons, SWT.PUSH);
    removeHostKeyButton.setText(Messages.CVSSSH2PreferencePage_138);
    int buttonWidth = SWTUtils.calculateControlSize(SWTUtils.createDialogPixelConverter(parent),
            new Button[] { removeHostKeyButton });
    removeHostKeyButton.setLayoutData(
            SWTUtils.createGridData(buttonWidth, SWT.DEFAULT, SWT.END, SWT.CENTER, false, false));
    removeHostKeyButton.setEnabled(false);
    removeHostKeyButton.addListener(SWT.Selection, new Listener() {
        public void handleEvent(Event e) {
            removeHostKey();
        }
    });

    Dialog.applyDialogFont(parent);

    // JSchSession.loadKnownHosts(JSchContext.getDefaultContext().getJSch());
    JSchCorePlugin.getPlugin().loadKnownHosts();
    HostKeyRepository hkr = getJSch().getHostKeyRepository();
    viewer.setInput(hkr.getHostKey());
    handleSelection();

    return group;
}