selectapplicationdialog.java

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

JAVA
240
字号
package isis.tinydt.properties;

//import isis.anp.nesc.common.WrapperNescConfigurationParser;
import isis.commons.fs.SearchPath;
import isis.tinydt.TinydtProject;

import java.io.DataInputStream;

import org.eclipse.core.resources.IContainer;
import org.eclipse.core.resources.IFile;
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.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.Event;
import org.eclipse.swt.widgets.Label;
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 SelectApplicationDialog extends Dialog
{
    protected TinydtProject proj = null;
    protected Tree tree = null;
    protected IFile selectedFile = null;
    
//    WrapperNescConfigurationParser confparser = null;
    
    public SelectApplicationDialog(Shell parent, TinydtProject proj ) 
    {
        super(parent);
        this.proj = proj;
    }
    
    protected void fillTreeWithNcFiles( IContainer res, TreeItem item )
    {
        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(item,SWT.NULL);
                    folder.setText(r.getName());
                    folder.setData(r);
                    folder.setImage( PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJ_FOLDER) );
                    fillTreeWithNcFiles( (IContainer)r, folder );
                }
                else if( r instanceof IFile )
                {
                    IFile f = (IFile)r;
                    
                    
            		
                    try
					{
                    	
                    if( f.getFullPath().getFileExtension()!=null && f.getFullPath().getFileExtension().equalsIgnoreCase("nc") /*&& !f.getContents().toString().matches("^configuration") && confparser.IsConfiguration(f.getLocation().toString(), searchPathList)*/)
                    {
                        TreeItem file = new TreeItem(item,SWT.NULL);
                        file.setText(r.getName());
                        file.setData(f);
                        file.setImage( PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJ_ELEMENT) );
                    }
					}
                    catch(Exception e)
					{
					
					}
                }                
            }                        
        }        
    }
    
    protected void fillTreeWithNcFiles( Tree tree )
    {
        tree.removeAll();
        TreeItem root = new TreeItem(tree,SWT.NULL);
        root.setText(proj.getProject().getName());
        root.setImage( PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJ_PROJECT) );
        fillTreeWithNcFiles( proj.getProject(), root );
    }
    
    protected Control createContents(Composite parent) 
    {
    	parent.getShell().setText("Select application");
        parent.setSize(400,400);
        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);
        
        //  the label of the tree (full line)
        Label label = new Label(c, SWT.NULL);
        label.setText("Text");
        GridData gridData2  = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);
        gridData2.horizontalSpan = 2;
        label.setLayoutData(gridData2);

        
        // tree
        tree = new Tree(c, SWT.BORDER );
        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.addListener(SWT.Expand, new Listener()
        {
            public void handleEvent(Event event)
            {
            	try
				{
            		SearchPath searchPathList = new SearchPath();
                    
//                    if (confparser == null)
//                    	confparser = new WrapperNescConfigurationParser();
                    
            		TreeItem expanded = (TreeItem)event.item;
            		TreeItem[] children = expanded.getItems();
            		for (int i = 0; i < children.length; i++)
            		{
            			// if the item is a leaf
            			if(children[i].getItemCount() == 0 && children[i].getData() instanceof IFile )
            			{
            				//FileReader fr = new FileReader(((IFile)children[i].getData()).getLocation().toString());
            				//BufferedReader br = new BufferedReader(fr);
            				
            				DataInputStream ds = new DataInputStream(((IFile)children[i].getData()).getContents());
            				String content ="";
            				while(ds.available() != 0)
            				{
            					content += ds.readLine();
            				}
            				
            				
            				
            				
            				/*if( content.indexOf("configuration") == -1 || !confparser.IsConfiguration(((IFile)children[i].getData()).getLocation().toString(), searchPathList))
           					{
            					children[i].dispose();
            				}*/
            				
            			}
            			
            		}
            	}
            	catch(Exception e)
				{
				
				}
            
            	
            }
        });
        
        fillTreeWithNcFiles(tree);
                
        // 'ok' button
        Button buttonOk = new Button(c, SWT.PUSH);
        buttonOk.setText("OK");
        // fill out the space
        GridData grid_OK = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
        // add indent
        grid_OK.horizontalIndent = 5;
        // it looks better in a slighter bigger size
        grid_OK.widthHint = 70;
        buttonOk.setLayoutData(grid_OK);
        buttonOk.addListener(SWT.Selection, new Listener()
        {
            public void handleEvent(Event event)
            {
                setReturnCode(OK);                
                TreeItem[] sel = tree.getSelection();
                if( sel.length == 1 )
                    selectedFile = (IFile)sel[0].getData();
                close();
            }
        });
        
        // 'cancel' button
        Button buttonCancel = new Button(c, SWT.PUSH);
        buttonCancel.setText("Cancel");
        // fill out the space
        GridData grid_Cancel = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
        grid_Cancel.horizontalIndent = 5;
        buttonCancel.setLayoutData(grid_Cancel);
        buttonCancel.addListener(SWT.Selection, new Listener()
        {
            public void handleEvent(Event event)
            {
                setReturnCode(CANCEL);
                close();
            }
        });                
        
  
        c.pack();
        
        return c;
    }    
    
}

⌨️ 快捷键说明

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