selectprojectandfolderdialog.java

来自「plugin for eclipse」· Java 代码 · 共 172 行

JAVA
172
字号
package isis.tinydt.properties;

import isis.tinydt.TinydtProject;

import java.util.Iterator;
import java.util.List;

import org.eclipse.core.resources.IContainer;
import org.eclipse.core.resources.IFolder;
import org.eclipse.core.resources.IResource;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.TreeEvent;
import org.eclipse.swt.events.TreeListener;
import org.eclipse.swt.graphics.Image;
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.Display;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Tree;
import org.eclipse.swt.widgets.TreeItem;
import org.eclipse.ui.ISharedImages;
import org.eclipse.ui.PlatformUI;

public class SelectProjectAndFolderDialog extends Dialog
{
    protected Tree   tree           = null;
    protected String selectedFolder = null;

    public SelectProjectAndFolderDialog(Shell parent)
    {
        super(parent);
    }
    
    public String getSelectedFolder()
    {
        return selectedFolder;
    }

    private void fillTreeWithFolders(TreeItem parentItem, IContainer res)
    {
        IResource[] members = null;
        try
        {
            members = res.members();
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
        if(members != null)
        {
            for(int i = 0; i < members.length; ++i)
            {
                IResource r = members[i];
                if(r instanceof IFolder)
                {
                    TreeItem folder = new TreeItem(parentItem, SWT.NULL);
                    folder.setText(r.getName());
                    folder.setData(r.getFullPath().toString());
                    folder.setImage(PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJ_FOLDER));
                    fillTreeWithFolders(folder, (IContainer) r);
                }
            }
        }
    }

    private void fillTreeWithProjects()
    {
        tree.removeAll();
        List list = TinydtProject.getTinydtProjects();
        Iterator it = list.iterator();
        while(it.hasNext())
        {
            TinydtProject proj = (TinydtProject) it.next();

            TreeItem projItem = new TreeItem(tree, SWT.NULL);

            projItem.setText(proj.getProject().getName());
            projItem.setData(proj.getProject().getFullPath().toString());                        
            projItem.setImage(PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJ_PROJECT));

            fillTreeWithFolders(projItem, proj.getProject());
        }
    }

    protected Control createContents(Composite parent)
    {
        parent.getShell().setText("Select folder");
        parent.setSize(500, 500);
        GridLayout gridLayout1 = new GridLayout();
        gridLayout1.numColumns = 1;
        parent.setLayout(gridLayout1);
        GridData gridData1 = new GridData();
        gridData1.horizontalAlignment = GridData.FILL;
        gridData1.verticalAlignment = GridData.FILL;
        gridData1.verticalSpan = 1;
        gridData1.grabExcessHorizontalSpace = true;
        gridData1.grabExcessVerticalSpace = true;

        Composite c = new Composite(parent, SWT.FILL);
        c.setLayoutData(gridData1);

        GridLayout gridLayout = new GridLayout();
        gridLayout.numColumns = 2;
        c.setLayout(gridLayout);

        tree = new Tree(c, SWT.NONE);
        GridData gridData = new GridData();
        gridData.horizontalAlignment = GridData.FILL;
        gridData.verticalAlignment = GridData.FILL;
        gridData.verticalSpan = 3;
        gridData.grabExcessHorizontalSpace = true;
        gridData.grabExcessVerticalSpace = true;
        tree.setLayoutData(gridData);

        /*
         * tree.addTreeListener(new TreeListener() { public void
         * treeExpanded(TreeEvent e) { TreeItem ti = (TreeItem) e.item;
         * ti.setImage(PlatformUI.getWorkbench().getSharedImages()
         * .getImage(ISharedImages.IMG_OBJ_PROJECT)); }
         * 
         * public void treeCollapsed(TreeEvent e) { TreeItem ti = (TreeItem)
         * e.item;
         * ti.setImage(PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJ_PROJECT_CLOSED)); }
         * });
         */

        fillTreeWithProjects();

        // 'ok' button
        Button buttonOk = new Button(c, SWT.PUSH);
        buttonOk.setText("Ok");
        buttonOk.addListener(SWT.Selection, new Listener()
        {
            public void handleEvent(Event event)
            {
                setReturnCode(OK);
                TreeItem[] sel = tree.getSelection();
                if( sel.length == 1 )
                    selectedFolder = (String)sel[0].getData();
                else
                    selectedFolder = null;                
                close();
            }
        });

        // 'cancel' button
        Button buttonCancel = new Button(c, SWT.PUSH);
        buttonCancel.setText("Cancel");
        buttonCancel.addListener(SWT.Selection, new Listener()
        {
            public void handleEvent(Event event)
            {
                setReturnCode(CANCEL);
                close();
            }
        });

        //c.setSize(400,400);
        c.pack();

        return c;
    }

}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?