editsearchpathdialog.java

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

JAVA
418
字号
package isis.tinydt.properties;

import isis.anp.config.PlatformProfile;
import isis.anp.config.SensorBoardProfile;
import isis.tinydt.TinydtPlugin;
import isis.tinydt.TinydtProject;

import java.util.ArrayList;
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.jface.resource.ImageRegistry;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
import org.eclipse.swt.widgets.Tree;
import org.eclipse.swt.widgets.TreeItem;
import org.eclipse.ui.ISharedImages;
import org.eclipse.ui.PlatformUI;


public class EditSearchPathDialog extends Dialog
{
    List                         inputFolderList   = null;
    Tree                         tree              = null;
    List                         includeFolders    = new ArrayList();
    org.eclipse.swt.widgets.List folderList        = null;
    String                       selectedFolder    = null;
    ImageRegistry                registry;
    Combo                        platformsCombo    = null;
    Combo                        sensorBoardsCombo = null;
    String                       platform;
    String                       sensorBoard;    

    public EditSearchPathDialog(Shell parent, List inputFolderList, String platform, String sensorBoard )
    {
        super(parent);
        this.inputFolderList = inputFolderList;
        this.platform = platform;
        this.sensorBoard = sensorBoard;
    }

    private void fillOutputFolderList()
    {
        String folders[] = folderList.getItems();
        includeFolders.clear();
        for(int i = 0; i < folders.length; ++i)
            includeFolders.add(folders[i]);
    }

    public List getIncludeFolders()
    {
        return includeFolders;
    }
    
    public String getPlatform()
    {
        return platform;
    }
    
    public String getSensorBoard()
    {
        return sensorBoard;
    }

    private void fillFolderList()
    {
        folderList.removeAll();
        Iterator it = inputFolderList.iterator();
        while(it.hasNext())
        {
            String folder = (String) it.next();
            folderList.add(folder);
        }
    }

    private void addFolderToEnd(String folder)
    {
        int i;

        // check if its added already
        int n = folderList.getItemCount();
        for(i = 0; i < n; ++i)
            if(folderList.getItem(i).equalsIgnoreCase(folder))
                break;

        if(i == n)
        {
            // not found -> add it
            folderList.add(folder);
        }
    }

    protected void fillCombos()
    {
        int i,j;
        
        try
        {        
            // fill platforms       
            j = 0;
            i = 0;
            platformsCombo.removeAll();
            Iterator it = PlatformProfile.getPlatforms().iterator();
            while( it.hasNext() )
            {
                String p = (String)it.next();
                platformsCombo.add(p);
                if( p.equalsIgnoreCase(platform) )
                    j = i;
                ++i;
            }
            platformsCombo.select(j);
            
            // fill sensorboards        
            sensorBoardsCombo.removeAll();
            j = 0;
            i = 0;
            it = SensorBoardProfile.getSensorBoards().iterator();
            while( it.hasNext() )
            {
                String s = (String)it.next();
                sensorBoardsCombo.add(s);
                if( s.equalsIgnoreCase(sensorBoard) )
                    j = i;
                ++i;
            }
            sensorBoardsCombo.select(j);
        }
        catch( Exception e )
        {
            e.printStackTrace();
        }
    }

    protected Control createContents(Composite c)
    {
        GridData gridData;
        GridLayout gridLayout;

        registry = new ImageRegistry(c.getDisplay());
        loadImages(registry);

        c.getShell().setText("Application properties");
        c.setSize(800, 600);
        gridLayout = new GridLayout();
        gridLayout.numColumns = 1;
        c.setLayout(gridLayout);

        // upper group
        Group group1 = new Group(c, SWT.NONE);
        group1.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.GRAB_HORIZONTAL));
        gridLayout = new GridLayout();
        gridLayout.numColumns = 4;
        group1.setLayout(gridLayout);
        Label l1 = new Label(group1, SWT.NONE);
        l1.setText("Platform");
        l1.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL));
        platformsCombo = new Combo(group1, SWT.READ_ONLY);
        platformsCombo.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.GRAB_HORIZONTAL));
        Label l2 = new Label(group1, SWT.NONE);
        l2.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL));
        l2.setText("Sensorboard");
        sensorBoardsCombo = new Combo(group1, SWT.READ_ONLY);
        sensorBoardsCombo.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.GRAB_HORIZONTAL));

        // middle group
        Group group2 = new Group(c, SWT.NONE);
        group2.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.GRAB_HORIZONTAL
                | GridData.VERTICAL_ALIGN_FILL | GridData.GRAB_VERTICAL));
        group2.setText("Additional inculde directories");
        gridLayout = new GridLayout();
        gridLayout.numColumns = 3;
        group2.setLayout(gridLayout);

        folderList = new org.eclipse.swt.widgets.List(group2, SWT.SINGLE | SWT.BORDER);
        gridData = new GridData();
        gridData.horizontalAlignment = GridData.FILL;
        gridData.verticalAlignment = GridData.FILL;
        gridData.horizontalSpan = 1;
        gridData.verticalSpan = 1;
        gridData.grabExcessHorizontalSpace = true;
        gridData.grabExcessVerticalSpace = true;
        folderList.setLayoutData(gridData);

        Composite buttons = new Composite(group2, SWT.NULL);
        gridData = new GridData();
        gridData.horizontalSpan = 1;
        gridData.verticalSpan = 1;
        buttons.setLayoutData(gridData);
        gridLayout = new GridLayout();
        gridLayout.numColumns = 1;
        buttons.setLayout(gridLayout);

        Button buttonUp = new Button(buttons, SWT.PUSH);
        buttonUp.setText("Up");
        gridData = new GridData();
        gridData.widthHint = 70;
        buttonUp.setLayoutData(gridData);
        buttonUp.addListener(SWT.Selection, new Listener()
        {
            public void handleEvent(Event event)
            {
                int sel = folderList.getSelectionIndex();
                if(sel > 0)
                {
                    String swap = folderList.getItem(sel - 1);
                    folderList.setItem(sel - 1, folderList.getItem(sel));
                    folderList.setItem(sel, swap);
                    folderList.select(sel - 1);
                }
            }
        });
        Button buttonDown = new Button(buttons, SWT.PUSH);
        buttonDown.setText("Down");
        gridData = new GridData();
        gridData.widthHint = 70;
        buttonDown.setLayoutData(gridData);
        buttonDown.addListener(SWT.Selection, new Listener()
        {
            public void handleEvent(Event event)
            {
                int sel = folderList.getSelectionIndex();
                if(sel < folderList.getItemCount() - 1)
                {
                    String swap = folderList.getItem(sel + 1);
                    folderList.setItem(sel + 1, folderList.getItem(sel));
                    folderList.setItem(sel, swap);
                    folderList.select(sel + 1);
                }
            }
        });
        Button buttonAdd = new Button(buttons, SWT.PUSH);
        buttonAdd.setText("<-Add");
        gridData = new GridData();
        gridData.widthHint = 70;
        buttonAdd.setLayoutData(gridData);
        buttonAdd.addListener(SWT.Selection, new Listener()
        {
            public void handleEvent(Event event)
            {
                TreeItem[] sel = tree.getSelection();
                if(sel.length == 1)
                    selectedFolder = (String) sel[0].getData();
                else
                    selectedFolder = null;
                addFolderToEnd(selectedFolder);
            }
        });
        Button buttonRemove = new Button(buttons, SWT.PUSH);
        buttonRemove.setText("Remove");
        gridData = new GridData();
        gridData.widthHint = 70;
        buttonRemove.setLayoutData(gridData);
        buttonRemove.addListener(SWT.Selection, new Listener()
        {
            public void handleEvent(Event event)
            {
                int sel = folderList.getSelectionIndex();
                if(sel >= 0)
                {
                    folderList.remove(sel);
                    if(sel < folderList.getItemCount())
                        folderList.select(sel);
                    else
                        folderList.select(sel - 1);
                }
            }
        });

        tree = new Tree(group2, SWT.SINGLE | SWT.BORDER);
        gridData = new GridData();
        gridData.horizontalAlignment = GridData.FILL;
        gridData.verticalAlignment = GridData.FILL;
        gridData.horizontalSpan = 1;
        gridData.verticalSpan = 1;
        gridData.grabExcessHorizontalSpace = true;
        gridData.grabExcessVerticalSpace = true;
        tree.setLayoutData(gridData);

        // lower group
        Group group3 = new Group(c, SWT.NONE);
        gridLayout = new GridLayout();
        gridLayout.numColumns = 1;
        group3.setLayout(gridLayout);
        group3.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.GRAB_HORIZONTAL
                | GridData.VERTICAL_ALIGN_FILL));
        group3.setText("Make options");
        Text makeOptions = new Text(group3, SWT.MULTI | SWT.WRAP);
        makeOptions.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.GRAB_HORIZONTAL
                | GridData.VERTICAL_ALIGN_FILL));

        // lowest group:)
        Composite group4 = new Composite(c, SWT.NONE);
        group4.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.GRAB_HORIZONTAL
                | GridData.VERTICAL_ALIGN_FILL));
        gridLayout = new GridLayout();
        gridLayout.numColumns = 3;
        group4.setLayout(gridLayout);

        Composite filler = new Composite(group4, SWT.NONE);
        filler.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.GRAB_HORIZONTAL));

        // ok button
        Button buttonOk = new Button(group4, SWT.PUSH);
        buttonOk.setText("OK");
        gridData = new GridData(GridData.HORIZONTAL_ALIGN_END);
        gridData.widthHint = 70;
        buttonOk.setLayoutData(gridData);        
        buttonOk.addListener(SWT.Selection, new Listener()
        {
            public void handleEvent(Event event)
            {
                sensorBoard = new String(sensorBoardsCombo.getText());
                platform = new String(platformsCombo.getText());
                fillOutputFolderList();
                setReturnCode(OK);
                close();
            }
        });

        // 'cancel' button
        Button buttonCancel = new Button(group4, SWT.PUSH);
        buttonCancel.setText("Cancel");
        gridData = new GridData(GridData.HORIZONTAL_ALIGN_END);
        gridData.widthHint = 70;
        buttonCancel.setLayoutData(gridData);
        buttonCancel.addListener(SWT.Selection, new Listener()
        {
            public void handleEvent(Event event)
            {
                setReturnCode(CANCEL);
                close();
            }
        });

        fillCombos();
        fillFolderList();
        fillTreeWithProjects();

        return c;
    }

    public static void loadImages(ImageRegistry registry)
    {
        registry.put("up", TinydtPlugin.imageDescriptorFromPlugin("isis.tinydt", "icons/up.ico"));
        registry.put("down", TinydtPlugin.imageDescriptorFromPlugin("isis.tinydt", "icons/down.ico"));
        registry.put("add", TinydtPlugin.imageDescriptorFromPlugin("isis.tinydt", "icons/add.ico"));
        registry.put("delete", TinydtPlugin.imageDescriptorFromPlugin("isis.tinydt", "icons/delete.ico"));
    }

    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());
        }
    }
}

⌨️ 快捷键说明

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