org.jcryptool.crypto.keystore.ui.dialogs.CommonPropertyDialog.java Source code

Java tutorial

Introduction

Here is the source code for org.jcryptool.crypto.keystore.ui.dialogs.CommonPropertyDialog.java

Source

// -----BEGIN DISCLAIMER-----
/**************************************************************************************************
 * Copyright (c) 2013 JCrypTool Team and Contributors
 * 
 * All rights reserved. This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License v1.0 which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *************************************************************************************************/
// -----END DISCLAIMER-----
package org.jcryptool.crypto.keystore.ui.dialogs;

import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.dialogs.TitleAreaDialog;
import org.eclipse.jface.layout.TableColumnLayout;
import org.eclipse.jface.viewers.ColumnLabelProvider;
import org.eclipse.jface.viewers.ColumnWeightData;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.IStructuredContentProvider;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.jface.viewers.TableViewerColumn;
import org.eclipse.swt.SWT;
import org.eclipse.swt.dnd.Clipboard;
import org.eclipse.swt.dnd.TextTransfer;
import org.eclipse.swt.dnd.Transfer;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableColumn;
import org.eclipse.wb.swt.layout.grouplayout.GroupLayout;
import org.eclipse.wb.swt.layout.grouplayout.LayoutStyle;
import org.jcryptool.crypto.keystore.ui.dialogs.contentproviders.ContentProviderFactory;
import org.jcryptool.crypto.keystore.ui.views.nodes.TreeNode;

/**
 * @author Anatoli Barski
 * 
 */
public class CommonPropertyDialog extends TitleAreaDialog {
    private IStructuredContentProvider contentProvider;
    protected TreeNode treeNode;
    private Table table;

    public CommonPropertyDialog(Shell parentShell, TreeNode treeNode) {
        super(parentShell);
        setShellStyle(SWT.RESIZE | SWT.TITLE);
        this.treeNode = treeNode;
    }

    public IStructuredContentProvider getContentProvider() {
        if (contentProvider == null) {
            contentProvider = ContentProviderFactory.create(treeNode);
        }
        return contentProvider;
    }

    /**
     * Create contents of the dialog.
     * 
     * @param parent
     */
    @Override
    protected Control createDialogArea(Composite parent) {

        Composite area = (Composite) super.createDialogArea(parent);

        Composite composite = new Composite(area, SWT.NONE);
        TableColumnLayout tclComposite = new TableColumnLayout();
        composite.setLayout(tclComposite);

        TableViewer tableViewer = new TableViewer(composite, SWT.BORDER | SWT.FULL_SELECTION | SWT.H_SCROLL);
        tableViewer.addSelectionChangedListener(new ISelectionChangedListener() {
            public void selectionChanged(SelectionChangedEvent event) {
                StructuredSelection selection = (StructuredSelection) event.getSelectionProvider().getSelection();
                TableEntry tableEntry = (TableEntry) selection.getFirstElement();
                final Clipboard cb = new Clipboard(Display.getCurrent());
                cb.setContents(new Object[] { tableEntry.getValue() },
                        new Transfer[] { TextTransfer.getInstance() });
            }
        });
        table = tableViewer.getTable();
        table.setHeaderVisible(true);
        table.setLinesVisible(true);

        TableViewerColumn tableViewerNameColumn = new TableViewerColumn(tableViewer, SWT.NONE);
        tableViewerNameColumn.setLabelProvider(new ColumnLabelProvider() {
            @Override
            public Image getImage(Object element) {
                return null;
            }

            @Override
            public String getText(Object element) {
                TableEntry entry = (TableEntry) element;
                return entry == null ? "" : entry.getName();
            }
        });
        TableColumn tblclmnNameColumn = tableViewerNameColumn.getColumn();
        tclComposite.setColumnData(tblclmnNameColumn, new ColumnWeightData(1, 2));
        tblclmnNameColumn.setText(Messages.getString("AbstractKeyDialog.tblclmnNameColumn.text")); //$NON-NLS-1$

        TableViewerColumn tableViewerValueColumn = new TableViewerColumn(tableViewer, SWT.NONE);
        tableViewerValueColumn.setLabelProvider(new ColumnLabelProvider() {
            @Override
            public Image getImage(Object element) {
                return null;
            }

            @Override
            public String getText(Object element) {
                TableEntry entry = (TableEntry) element;
                return entry == null ? "" : entry.getValue();
            }
        });
        TableColumn tblclmnValueColumn = tableViewerValueColumn.getColumn();
        tclComposite.setColumnData(tblclmnValueColumn, new ColumnWeightData(2, 2));
        tblclmnValueColumn.setText(Messages.getString("AbstractKeyDialog.tblclmnValueColumn.text")); //$NON-NLS-1$
        tableViewer.setContentProvider(getContentProvider());

        tableViewer.setInput(treeNode);

        Label lblTableLabel = new Label(area, SWT.NONE);
        lblTableLabel.setText(Messages.getString("AbstractKeyDialog.lblTableLabel.text")); //$NON-NLS-1$
        GroupLayout glArea = new GroupLayout(area);
        glArea.setHorizontalGroup(
                glArea.createParallelGroup(GroupLayout.LEADING)
                        .add(glArea.createSequentialGroup().addContainerGap()
                                .add(glArea.createParallelGroup(GroupLayout.LEADING).add(lblTableLabel)
                                        .add(composite, GroupLayout.DEFAULT_SIZE, 492, Short.MAX_VALUE))
                                .addContainerGap()));
        glArea.setVerticalGroup(glArea.createParallelGroup(GroupLayout.LEADING)
                .add(glArea.createSequentialGroup().addContainerGap().add(lblTableLabel)
                        .addPreferredGap(LayoutStyle.RELATED)
                        .add(composite, GroupLayout.DEFAULT_SIZE, 272, Short.MAX_VALUE).addContainerGap()));
        area.setLayout(glArea);

        return area;
    }

    /**
     * Create contents of the button bar.
     * 
     * @param parent
     */
    @Override
    protected void createButtonsForButtonBar(Composite parent) {
        createButton(parent, IDialogConstants.CANCEL_ID, IDialogConstants.CLOSE_LABEL, true);
    }

}