nexcore.alm.common.ui.dialog.ContentsManagementDialog.java Source code

Java tutorial

Introduction

Here is the source code for nexcore.alm.common.ui.dialog.ContentsManagementDialog.java

Source

/**
 * Copyright (c) 2015 SK holdings Co., Ltd. All rights reserved.
 * This software is the confidential and proprietary information of SK holdings.
 * You shall not disclose such confidential information and shall use it only in
 * accordance with the terms of the license agreement you entered into with SK holdings.
 * (http://www.eclipse.org/legal/epl-v10.html)
 */

package nexcore.alm.common.ui.dialog;

import nexcore.alm.common.ui.Activator;
import nexcore.alm.common.ui.constant.ColorConstant;
import nexcore.alm.common.ui.constant.ImageConstant;

import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.FocusEvent;
import org.eclipse.swt.events.FocusListener;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.graphics.Point;
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.Label;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
import org.eclipse.swt.widgets.ToolBar;
import org.eclipse.swt.widgets.ToolItem;
import org.eclipse.ui.dialogs.ContainerCheckedTreeViewer;
import org.eclipse.ui.dialogs.SelectionDialog;
import org.eclipse.ui.forms.widgets.ExpandableComposite;
import org.eclipse.ui.forms.widgets.FormToolkit;
import org.eclipse.ui.forms.widgets.Section;

/**
 * <ul>
 * <li>  : nexcore.tool.uml.ui.project</li>
 * <li>  : nexcore.tool.uml.ui.project.explorer.dialog</li>
 * <li>   : ContentsManagementDialog</li>
 * <li>? : 2011. 11. 9.</li>
 * <li>? : nspark</li>
 * </ul>
 */
public abstract class ContentsManagementDialog extends SelectionDialog {

    /** ?   ? */
    private static final int DIALOG_DEFAULT_WIDTH = 950;
    /** ?   ? */
    private static final int DIALOG_DEFAULT_HEIGHT = 700;
    /**    ? */
    protected static final int TABLE_WIDTH = 300;

    /**    */
    protected Section sourceSection;
    /**    */
    protected Section targetSection;

    /**  ?   ? */
    protected ContainerCheckedTreeViewer sourceCheckTreeViewer;
    /**  ?   ?  */
    protected ContainerCheckedTreeViewer targetCheckTreeViewer;

    /**  ? ? ?   */
    protected ToolBar sourceItemToolBar;
    /**  ? ? ?   */
    protected ToolBar targetItemToolBar;

    /**  ? ? ?   */
    protected Text filterText;

    /**  ? ? ?    */
    protected Text rightFilterText;

    /** '>'  */
    protected Button addToRepositoryButton;
    /** '<'   */
    //    protected Button addToLocalButton;

    /** toolkit */
    protected FormToolkit toolkit;

    /** treeFilter */
    protected ToolItem treeFilter;

    /**
     * ??
     * @param parentShell
     */
    protected ContentsManagementDialog(Shell parentShell) {
        super(parentShell);
        setTitle(Messages.ContentsManagementDialog_MANAGEMENT_REPOSITORY_CONTENTS);
    }

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

        Composite container = (Composite) super.createDialogArea(parent);
        container.setBackground(ColorConstant.WHITE);
        container.setLayoutData(new GridData(GridData.FILL_BOTH));
        GridLayout gl = new GridLayout();
        gl.verticalSpacing = 5;
        gl.marginWidth = 5;
        gl.marginHeight = 5;
        gl.horizontalSpacing = 0;
        container.setLayout(gl);

        Composite treeComposite = new Composite(container, SWT.NONE);
        treeComposite.setBackground(ColorConstant.WHITE);
        GridData treeGD = new GridData(GridData.FILL_BOTH);
        treeComposite.setLayoutData(treeGD);
        GridLayout treeGL = new GridLayout(3, false);
        treeComposite.setLayout(treeGL);

        //   
        sourceSection = getFormToolkit().createSection(treeComposite, ExpandableComposite.TITLE_BAR);
        GridData data = new GridData(GridData.FILL_BOTH);
        data.verticalSpan = 2;
        data.widthHint = TABLE_WIDTH;
        sourceSection.setLayoutData(data);
        GridLayout sectionLayout = new GridLayout(1, false);
        sourceSection.setLayout(sectionLayout);
        sourceSection.setText(Messages.ContentsManagementDialog_LOCAL_CONTENTS);//UMLMessage.LABEL_LOCAL_CONTENS); 

        //   
        Composite filterComposite = new Composite(sourceSection, SWT.NONE);
        GridLayout layout = new GridLayout(1, false);
        data = new GridData(GridData.FILL_BOTH);
        filterComposite.setLayout(layout);
        filterComposite.setLayoutData(data);
        filterComposite.setBackground(ColorConstant.WHITE);
        //   ?
        filterText = new Text(filterComposite, SWT.BORDER);
        filterText.setForeground(filterText.getDisplay().getSystemColor(SWT.COLOR_GRAY));
        filterText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
        filterText.addFocusListener(new FocusListener() {
            @Override
            public void focusLost(FocusEvent e) {
                filterText.setForeground(filterText.getDisplay().getSystemColor(SWT.COLOR_GRAY));
            }

            @Override
            public void focusGained(FocusEvent e) {
                filterText.setForeground(filterText.getDisplay().getSystemColor(SWT.COLOR_BLACK));
            }
        });

        //    
        sourceCheckTreeViewer = new ContainerCheckedTreeViewer(filterComposite,
                SWT.BORDER | SWT.CHECK | SWT.H_SCROLL | SWT.V_SCROLL | SWT.HIDE_SELECTION);
        data = new GridData(GridData.FILL_BOTH);
        data.widthHint = TABLE_WIDTH;
        data.verticalSpan = 2;
        sourceCheckTreeViewer.getTree().setLayoutData(data);

        Composite buttonComposite = new Composite(treeComposite, SWT.NONE);
        buttonComposite.setBackground(ColorConstant.WHITE);
        buttonComposite.setLayout(new GridLayout());
        buttonComposite.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, false, true));

        // '>' 
        addToRepositoryButton = new Button(buttonComposite, SWT.NONE);
        addToRepositoryButton.setImage(Activator.getDefault().getImage(ImageConstant.NEW_ARROW_ADD));
        new Label(buttonComposite, SWT.NONE);
        // '<' 
        //        addToLocalButton = new Button(buttonComposite, SWT.NONE);
        //        addToLocalButton.setImage(Activator.getDefault().getImage(ImageConstant.ARROW_LEFT));

        //   
        targetSection = getFormToolkit().createSection(treeComposite, ExpandableComposite.TITLE_BAR);
        data = new GridData(GridData.FILL_BOTH);
        data.verticalSpan = 2;
        targetSection.setLayoutData(data);
        sectionLayout = new GridLayout(1, true);
        targetSection.setLayout(sectionLayout);
        targetSection.setText(Messages.ContentsManagementDialog_REPOSITORY_CONTENTS);//UMLMessage.LABEL_NCP_METACONTENTS); 

        //   
        Composite rightFilterComposite = new Composite(targetSection, SWT.NONE);
        layout = new GridLayout(1, false);
        data = new GridData(GridData.FILL_BOTH);
        rightFilterComposite.setLayout(layout);
        rightFilterComposite.setLayoutData(data);
        rightFilterComposite.setBackground(ColorConstant.WHITE);
        rightFilterText = new Text(rightFilterComposite, SWT.BORDER);
        rightFilterText.setForeground(filterText.getDisplay().getSystemColor(SWT.COLOR_GRAY));
        rightFilterText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
        rightFilterText.addFocusListener(new FocusListener() {
            @Override
            public void focusLost(FocusEvent e) {
                rightFilterText.setForeground(rightFilterText.getDisplay().getSystemColor(SWT.COLOR_GRAY));
            }

            @Override
            public void focusGained(FocusEvent e) {
                rightFilterText.setForeground(rightFilterText.getDisplay().getSystemColor(SWT.COLOR_BLACK));
            }
        });

        //    
        targetCheckTreeViewer = new ContainerCheckedTreeViewer(rightFilterComposite,
                SWT.BORDER | SWT.CHECK | SWT.H_SCROLL | SWT.V_SCROLL | SWT.HIDE_SELECTION);
        data = new GridData(GridData.FILL_BOTH);
        data.widthHint = TABLE_WIDTH;
        data.verticalSpan = 2;
        targetCheckTreeViewer.getTree().setLayoutData(data);

        //   
        sourceSection.setClient(filterComposite);
        targetSection.setClient(rightFilterComposite);
        //   
        addSourceItemToolBar(sourceSection);
        addTargetItemToolBar(targetSection);

        addSelectionChangedListener();

        //==========  
        Composite colorLabelComposite = new Composite(parent, SWT.NONE);
        GridLayout gridLayout = new GridLayout(2, false);
        gridLayout.horizontalSpacing = 10;
        colorLabelComposite.setLayout(gridLayout);
        colorLabelComposite.setLayoutData(new GridData(SWT.FILL, SWT.BOTTOM, true, false, 3, 1));

        Label colorLabel = new Label(colorLabelComposite, SWT.BOLD);
        colorLabel.setText("            "); //$NON-NLS-1$
        colorLabel.setBackground(ColorConstant.WHITE);
        Label explainLabel = new Label(colorLabelComposite, SWT.BOLD);
        explainLabel.setText(Messages.ContentsManagementDialog_COMPARE_SAME);

        colorLabel = new Label(colorLabelComposite, SWT.BOLD);
        colorLabel.setText("            "); //$NON-NLS-1$
        colorLabel.setBackground(ColorConstant.RED);
        explainLabel = new Label(colorLabelComposite, SWT.BOLD);
        explainLabel.setText(Messages.ContentsManagementDialog_COMPARE_DIFF);

        colorLabel = new Label(colorLabelComposite, SWT.BOLD);
        colorLabel.setText("            "); //$NON-NLS-1$
        colorLabel.setBackground(ColorConstant.GREEN);
        explainLabel = new Label(colorLabelComposite, SWT.BOLD);
        explainLabel.setText(Messages.ContentsManagementDialog_COMPARE_ONESIDE);

        initialization();

        return container;
    }

    public void addSelectionChangedListener() {
        sourceCheckTreeViewer.addSelectionChangedListener(new ISelectionChangedListener() {
            @Override
            public void selectionChanged(SelectionChangedEvent event) {
                sourceCheckTreeViewerSelectionChanged(event);
            }
        });

        targetCheckTreeViewer.addSelectionChangedListener(new ISelectionChangedListener() {
            @Override
            public void selectionChanged(SelectionChangedEvent event) {
                targetCheckTreeViewerSelectionChanged(event);
            }
        });
    }

    public void sourceCheckTreeViewerSelectionChanged(SelectionChangedEvent event) {
        // sourceCheckTreeViewer ? selectionChanged 
    }

    public void targetCheckTreeViewerSelectionChanged(SelectionChangedEvent event) {
        // targetCheckTreeViewer ? selectionChanged 
    }

    /**
     * ? ? ? .
     * 
     * 1. ? ???, ???, ,  ...
     * 2. ? setInput  .
     * 
     * 3.  ?  .
     * 4. '>' , '<' , 'Compare', ''   
     * 
     * 
     *   void
     */
    protected abstract void initialization();

    /**
     *    ? .
     *   void
     */
    protected abstract void deleteRepositoryContents();
    //    /**
    //     *   ?  ? ?.
    //     *   void
    //     */
    //    protected abstract void compare();

    /**
     *  
     *   void
     */
    protected abstract void treeFilter();

    /**
     *   
     *  
     * @param section void
     */
    public void addSourceItemToolBar(Section section) {
        sourceItemToolBar = new ToolBar(section, SWT.FLAT | SWT.HORIZONTAL);

        // '+' <- expandAll  
        //        ToolItem expandAll = new ToolItem(sourceItemToolBar, SWT.PUSH);
        //        expandAll.setToolTipText("Expand All");//UMLMessage.LABEL_EXPAND_ALL);//$NON-NLS-1$
        //        expandAll.setText("[+]");
        //        expandAll.addSelectionListener(new SelectionAdapter() {
        //            @Override
        //            public void widgetSelected(SelectionEvent e) {
        //                sourceCheckTreeViewer.expandAll();
        //            }
        //        });
        // '-' <- collapseAll  
        ToolItem collapseAll = new ToolItem(sourceItemToolBar, SWT.PUSH);
        collapseAll.setToolTipText(Messages.ContentsManagementDialog_CALLAPSE_ALL);//UMLMessage.LABEL_CALLAPSE_ALL);
        collapseAll.setImage(Activator.getDefault().getImage(ImageConstant.NEW_COLLAPSE_ALL));
        collapseAll.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                sourceCheckTreeViewer.collapseAll();
            }
        });
        // '?'  
        //        ToolItem checkItem = new ToolItem(sourceItemToolBar, SWT.PUSH);
        //        checkItem.setToolTipText(Messages.ContentsManagementDialog_CHECK_ALL);//UMLMessage.LABEL_CHECK_ALL);
        //        checkItem.setImage(Activator.getDefault().getImage(ImageConstant.NEW_CHECK_ALL));
        //        checkItem.addSelectionListener(new SelectionAdapter() {
        //            @Override
        //            public void widgetSelected(SelectionEvent e) {
        //                sourceCheckTreeViewer.setAllChecked(true);
        //            }
        //        });
        //        // '?'  
        //        ToolItem unCheckItem = new ToolItem(sourceItemToolBar, SWT.PUSH);
        //        unCheckItem.setToolTipText(Messages.ContentsManagementDialog_UNCHECK_ALL);//UMLMessage.LABEL_UNCHECK_ALL); 
        //        unCheckItem.setImage(Activator.getDefault().getImage(ImageConstant.NEW_UNCHECK_ALL));
        //        unCheckItem.addSelectionListener(new SelectionAdapter() {
        //            @Override
        //            public void widgetSelected(SelectionEvent e) {
        //                sourceCheckTreeViewer.setAllChecked(false);
        //            }
        //        });

        ToolItem toggleCheckItem = new ToolItem(sourceItemToolBar, SWT.CHECK);
        toggleCheckItem.setToolTipText(Messages.ContentsManagementDialog_CHECK_ALL);//UMLMessage.LABEL_UNCHECK_ALL); 
        toggleCheckItem.setImage(Activator.getDefault().getImage(ImageConstant.NEW_CHECK_ALL));
        toggleCheckItem.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                sourceCheckTreeViewer.setAllChecked(((ToolItem) e.widget).getSelection());
                if (((ToolItem) e.widget).getSelection()) {
                    ((ToolItem) e.widget).setToolTipText(Messages.ContentsManagementDialog_UNCHECK_ALL);//UMLMessage.LABEL_UNCHECK_ALL); 
                    ((ToolItem) e.widget).setImage(Activator.getDefault().getImage(ImageConstant.NEW_UNCHECK_ALL));
                } else {
                    ((ToolItem) e.widget).setToolTipText(Messages.ContentsManagementDialog_CHECK_ALL);//UMLMessage.LABEL_UNCHECK_ALL); 
                    ((ToolItem) e.widget).setImage(Activator.getDefault().getImage(ImageConstant.NEW_CHECK_ALL));
                }
            }
        });

        // 'Compare'  
        //        ToolItem compare = new ToolItem(sourceItemToolBar, SWT.CHECK);
        //        compare.setToolTipText("Compare");
        //        compare.setText("Compare"); 
        //        compare.addSelectionListener(new SelectionAdapter() {
        //            @Override
        //            public void widgetSelected(SelectionEvent e) {
        //                compare();
        //            }
        //        });

        // 'TreeFilter'  
        treeFilter = new ToolItem(sourceItemToolBar, SWT.CHECK);
        treeFilter.setToolTipText(Messages.ContentsManagementDialog_VIEW_ONLY_DIFFRENT);
        treeFilter.setImage(Activator.getDefault().getImage(ImageConstant.NEW_VIEW_ONLY_DIFFRENT));
        treeFilter.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                treeFilter();
            }

        });

        section.setTextClient(sourceItemToolBar);
    }

    /**
     *   
     *  
     * @param section void
     */
    public void addTargetItemToolBar(Section section) {
        targetItemToolBar = new ToolBar(section, SWT.FLAT | SWT.HORIZONTAL);
        // '+' <- expandAll  
        //        ToolItem expandAll = new ToolItem(targetItemToolBar, SWT.PUSH);
        //        expandAll.setToolTipText("Expand All"); 
        //        expandAll.setText("[+]");
        //        expandAll.addSelectionListener(new SelectionAdapter() {
        //            @Override
        //            public void widgetSelected(SelectionEvent e) {
        //                targetCheckTreeViewer.expandAll();
        //            }
        //        });
        // '-' <- collapseAll  
        ToolItem collapseAll = new ToolItem(targetItemToolBar, SWT.PUSH);
        collapseAll.setToolTipText(Messages.ContentsManagementDialog_CALLAPSE_ALL);
        collapseAll.setImage(Activator.getDefault().getImage(ImageConstant.NEW_COLLAPSE_ALL));
        collapseAll.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                targetCheckTreeViewer.collapseAll();
            }
        });
        // '?'         
        //        ToolItem checkItem = new ToolItem(targetItemToolBar, SWT.PUSH);
        //        checkItem.setToolTipText(Messages.ContentsManagementDialog_CHECK_ALL);  
        //        checkItem.setImage(Activator.getDefault().getImage(ImageConstant.NEW_CHECK_ALL));
        //        checkItem.addSelectionListener(new SelectionAdapter() {
        //            @Override
        //            public void widgetSelected(SelectionEvent e) {
        //                targetCheckTreeViewer.setAllChecked(true);
        //            }
        //        });
        //        // '?'  
        //        ToolItem unCheckItem = new ToolItem(targetItemToolBar, SWT.PUSH);
        //        unCheckItem.setToolTipText(Messages.ContentsManagementDialog_UNCHECK_ALL);   
        //        unCheckItem.setImage(Activator.getDefault().getImage(ImageConstant.NEW_UNCHECK_ALL));
        //        unCheckItem.addSelectionListener(new SelectionAdapter() {
        //            @Override
        //            public void widgetSelected(SelectionEvent e) {
        //                targetCheckTreeViewer.setAllChecked(false);
        //            }
        //        });

        ToolItem toggleCheckItem = new ToolItem(targetItemToolBar, SWT.CHECK);
        toggleCheckItem.setToolTipText(Messages.ContentsManagementDialog_CHECK_ALL);//UMLMessage.LABEL_UNCHECK_ALL); 
        toggleCheckItem.setImage(Activator.getDefault().getImage(ImageConstant.NEW_CHECK_ALL));
        toggleCheckItem.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                targetCheckTreeViewer.setAllChecked(((ToolItem) e.widget).getSelection());
                if (((ToolItem) e.widget).getSelection()) {
                    ((ToolItem) e.widget).setToolTipText(Messages.ContentsManagementDialog_UNCHECK_ALL);//UMLMessage.LABEL_UNCHECK_ALL); 
                    ((ToolItem) e.widget).setImage(Activator.getDefault().getImage(ImageConstant.NEW_UNCHECK_ALL));
                } else {
                    ((ToolItem) e.widget).setToolTipText(Messages.ContentsManagementDialog_CHECK_ALL);//UMLMessage.LABEL_UNCHECK_ALL); 
                    ((ToolItem) e.widget).setImage(Activator.getDefault().getImage(ImageConstant.NEW_CHECK_ALL));
                }
            }
        });

        // ''  
        ToolItem deleteItem = new ToolItem(targetItemToolBar, SWT.PUSH);
        deleteItem.setToolTipText(Messages.ContentsManagementDialog_DELETE);//UMLMessage.LABEL_DELETE_METACONTENT);  
        deleteItem.setImage(Activator.getDefault().getImage(ImageConstant.NEW_DELETE));
        deleteItem.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                // ?  .
                deleteRepositoryContents();
            }

        });
        section.setTextClient(targetItemToolBar);
    }

    /**
     * ? ? ? 'Close'  ?.
     * 
     * @see org.eclipse.ui.dialogs.SelectionDialog#createButtonsForButtonBar(org.eclipse.swt.widgets.Composite)
     */
    @Override
    protected void createButtonsForButtonBar(Composite parent) {
        createButton(parent, IDialogConstants.OK_ID, IDialogConstants.CLOSE_LABEL, false);
    }

    /**
     * ?  ?  ? 
     * 
     * @see org.eclipse.jface.dialogs.Dialog#getInitialSize()
     */
    @Override
    protected Point getInitialSize() {
        getShell().setMinimumSize(DIALOG_DEFAULT_WIDTH, DIALOG_DEFAULT_HEIGHT);

        return new Point(DIALOG_DEFAULT_WIDTH, DIALOG_DEFAULT_HEIGHT);
    }

    /**
     * @see org.eclipse.jface.dialogs.TrayDialog#createHelpControl(org.eclipse.swt.widgets.Composite)
     */
    @Override
    protected Control createHelpControl(Composite parent) {
        //        return super.createHelpControl(parent);
        return parent;
    }

    /**
     * getFormToolkit
     *  
     * @return FormToolkit
     */
    private FormToolkit getFormToolkit() {
        toolkit = new FormToolkit(getShell().getDisplay());
        return toolkit;
    }
}