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 + -
显示快捷键?