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