org.d3s.alricg.editor.editors.dialoge.ShowDependenciesDialog.java Source code

Java tutorial

Introduction

Here is the source code for org.d3s.alricg.editor.editors.dialoge.ShowDependenciesDialog.java

Source

/*
 * Created 13.08.2007
 *
 * This file is part of the project Alricg. The file is copyright
 * protected and under the GNU General Public License.
 * For more information see "http://www.alricg.de/".
 */
package org.d3s.alricg.editor.editors.dialoge;

import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;

import org.d3s.alricg.editor.Activator;
import org.d3s.alricg.editor.common.CustomColumnLabelProvider;
import org.d3s.alricg.editor.common.CustomColumnViewerSorter;
import org.d3s.alricg.editor.common.ViewUtils.TableViewContentProvider;
import org.d3s.alricg.editor.common.ViewUtils.ViewerSelectionListener;
import org.d3s.alricg.editor.editors.composits.CharElementEditorInput;
import org.d3s.alricg.editor.utils.ViewEditorIdManager;
import org.d3s.alricg.editor.utils.EditorViewUtils.EditorTableObject;
import org.d3s.alricg.editor.utils.EditorViewUtils.EditorTreeOrTableObject;
import org.d3s.alricg.editor.views.ViewMessages;
import org.d3s.alricg.store.access.XmlAccessor;
import org.d3s.alricg.store.access.CharElementFactory.DependencyTableObject;
import org.d3s.alricg.store.charElemente.CharElement;
import org.eclipse.jface.action.Action;
import org.eclipse.jface.dialogs.TitleAreaDialog;
import org.eclipse.jface.viewers.ColumnLabelProvider;
import org.eclipse.jface.viewers.ColumnViewerToolTipSupport;
import org.eclipse.jface.viewers.DoubleClickEvent;
import org.eclipse.jface.viewers.IDoubleClickListener;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.jface.viewers.TableViewerColumn;
import org.eclipse.jface.window.ToolTip;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.PlatformUI;

/**
 * Dialog um die gefundenen Abhngigkeiten eines CharElements zu zu anderen darzustellen.
 * @author Vincent
 */
public class ShowDependenciesDialog extends TitleAreaDialog {
    private final CharElement charElementToDelete;
    private List<DependencyEditorTableObject> editorTabObj;
    private Action doubleClickAction;
    private TableViewer tableViewer;

    public ShowDependenciesDialog(Shell parentShell, CharElement charElement, List<DependencyTableObject> depList) {
        super(parentShell);
        this.charElementToDelete = charElement;
        createTable(depList);
        this.setTitle(ViewMessages.ShowDependenciesDialog_Titel1);
    }

    @Override
    protected void createButtonsForButtonBar(Composite parent) {
        final Button okButton = this.createButton(parent, OK, ViewMessages.ShowDependenciesDialog_OKButton, true);
        okButton.addSelectionListener(new SelectionAdapter() {

            @Override
            public void widgetSelected(SelectionEvent e) {
                setReturnCode(OK);
                close();
            }

        });
    }

    @Override
    public void create() {
        super.create();
        this.setTitle(ViewMessages.ShowDependenciesDialog_Titel2);
        this.setMessage(
                ViewMessages.bind(ViewMessages.ShowDependenciesDialog_TitelSubText, charElementToDelete.getName()));
    }

    private void createTable(List<DependencyTableObject> depList) {
        editorTabObj = new ArrayList<DependencyEditorTableObject>();

        for (int i = 0; i < depList.size(); i++) {
            DependencyEditorTableObject tmpObj = new DependencyEditorTableObject(depList.get(i).getCharElement(),
                    depList.get(i).getAccessor(), depList.get(i).getText());
            editorTabObj.add(tmpObj);
        }

    }

    /* (non-Javadoc)
     * @see org.eclipse.jface.dialogs.Dialog#createDialogArea(org.eclipse.swt.widgets.Composite)
     */
    @Override
    protected Control createDialogArea(Composite parent) {

        final GridLayout gridLayout = new GridLayout();
        gridLayout.numColumns = 1;

        GridData tmpGData;

        final Composite container = new Composite(parent, SWT.NONE);
        container.setLayout(gridLayout);

        tableViewer = new TableViewer(container, SWT.FULL_SELECTION | SWT.H_SCROLL | SWT.V_SCROLL);
        tmpGData = new GridData(GridData.FILL_BOTH);
        tmpGData.heightHint = 100;
        tableViewer.getTable().setLayoutData(tmpGData);
        tableViewer.getTable().setLinesVisible(true);
        tableViewer.getTable().setHeaderVisible(true);
        ColumnViewerToolTipSupport.enableFor(tableViewer, ToolTip.NO_RECREATE);

        TableViewerColumn tc = new TableViewerColumn(tableViewer, SWT.LEFT, 0);
        tableViewer.getTable().setSortColumn(tc.getColumn());
        tc.getColumn().setText(ViewMessages.ShowDependenciesDialog_Name);
        tc.getColumn().setWidth(100);
        tc.setLabelProvider(new ColumnLabelProvider());
        tc.setLabelProvider(new CustomColumnLabelProvider.NameLabelProvider());
        tc.getColumn().addSelectionListener(
                new ViewerSelectionListener(new CustomColumnViewerSorter.NameSorter(), tableViewer));

        tc = new TableViewerColumn(tableViewer, SWT.LEFT, 1);
        tc.getColumn().setText(ViewMessages.ShowDependenciesDialog_Klasse);
        tc.getColumn().setWidth(100);
        tc.setLabelProvider(new CustomColumnLabelProvider.CharElementKlassenProvider());
        tc.getColumn().addSelectionListener(
                new ViewerSelectionListener(new CustomColumnViewerSorter.CharElementKlasseSorter(), tableViewer));

        tc = new TableViewerColumn(tableViewer, SWT.LEFT, 2);
        tc.getColumn().setText(ViewMessages.ShowDependenciesDialog_Datei);
        tc.getColumn().setWidth(100);
        tc.setLabelProvider(new CustomColumnLabelProvider.DateinameLabelProvider());
        tc.getColumn().addSelectionListener(
                new ViewerSelectionListener(new CustomColumnViewerSorter.DateiSorter(), tableViewer));

        tc = new TableViewerColumn(tableViewer, SWT.LEFT, 3);
        tc.getColumn().setText(ViewMessages.ShowDependenciesDialog_Anmerkung);
        tc.getColumn().setWidth(200);
        tc.setLabelProvider(new DependencyTextLabelProvider());

        // Inhalt und Sortierung setzen
        tableViewer.setContentProvider(new TableViewContentProvider());
        tableViewer.getTable().setSortDirection(SWT.UP);
        tableViewer.setSorter(new CustomColumnViewerSorter.NameSorter());
        tableViewer.setInput(editorTabObj);

        // Actions
        makeActions();
        hookActions();

        return container;
    }

    private void hookActions() {
        tableViewer.addDoubleClickListener(new IDoubleClickListener() {
            public void doubleClick(DoubleClickEvent event) {
                doubleClickAction.run();
            }
        });
    }

    private void makeActions() {
        doubleClickAction = new Action() {
            public void run() {
                ISelection selection = tableViewer.getSelection();
                if (selection.isEmpty())
                    return;

                Object obj = ((IStructuredSelection) selection).getFirstElement();

                final EditorTreeOrTableObject treeTableObj = (EditorTreeOrTableObject) obj;
                final IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();

                IEditorInput editorInput = new CharElementEditorInput((CharElement) treeTableObj.getValue(),
                        treeTableObj.getAccessor(), false);

                try {
                    page.openEditor(editorInput,
                            ViewEditorIdManager.getEditorID(treeTableObj.getValue().getClass()), true);

                } catch (PartInitException e) {
                    Activator.logger.log(Level.SEVERE, "Konnte Editor nicht ffnen. Editor ID: " //$NON-NLS-1$
                            + ViewEditorIdManager.getEditorID(treeTableObj.getValue().getClass()), e);
                }
            }
        };
    }

    public static class DependencyEditorTableObject extends EditorTableObject {
        final String text;

        public DependencyEditorTableObject(Object value, XmlAccessor accessor, String text) {
            super(value, accessor);
            this.text = text;
        }

        public String getText() {
            return text;
        }
    }

    public static class DependencyTextLabelProvider extends ColumnLabelProvider {
        @Override
        public String getText(Object element) {
            return ((DependencyEditorTableObject) element).getText();
        }
    }

}