1 28 29 package org.objectweb.fractal.explorer.menu; 30 31 import java.util.List ; 32 import java.util.Vector ; 33 34 import org.objectweb.fractal.api.Component; 35 import org.objectweb.fractal.api.type.InterfaceType; 36 import org.objectweb.fractal.api.type.TypeFactory; 37 import org.objectweb.fractal.explorer.FcExplorer; 38 import org.objectweb.util.explorer.api.MenuItem; 39 import org.objectweb.util.explorer.api.MenuItemTreeView; 40 import org.objectweb.util.explorer.api.TreeView; 41 import org.objectweb.util.explorer.core.common.api.ContextContainer; 42 import org.objectweb.util.explorer.swing.gui.api.DialogAction; 43 import org.objectweb.util.explorer.swing.gui.api.DialogBox; 44 import org.objectweb.util.explorer.swing.gui.lib.DefaultDialogBox; 45 import org.objectweb.util.explorer.swing.gui.lib.ExtendedTreeChooserBox; 46 import org.objectweb.util.explorer.swing.gui.lib.LabelBox; 47 48 53 public class CreateComponentTypeAction 54 implements MenuItem, 55 DialogAction 56 { 57 63 64 protected LabelBox name_; 65 66 67 protected ExtendedTreeChooserBox extendedTreeChooserBox_; 68 69 70 protected ContextContainer cc_; 71 72 78 84 87 protected void createBox(DialogBox dialogBox, Component treeComponent) { 88 name_= new LabelBox("Name"); 89 dialogBox.addElementBox(name_); 90 extendedTreeChooserBox_ = new ExtendedTreeChooserBox("Interface Type",treeComponent, dialogBox); 91 dialogBox.addElementBox(extendedTreeChooserBox_); 92 } 93 94 100 103 public void actionPerformed(MenuItemTreeView e) throws Exception { 104 cc_ = (ContextContainer)e.getSelectedObject(); 105 106 DialogBox dialog = new DefaultDialogBox("Create a new component type"); 107 createBox(dialog, e.getTree().duplicate()); 108 dialog.setValidateAction(this); 109 dialog.show(); 110 } 111 112 115 public int getStatus(TreeView treeView) { 116 return MenuItem.ENABLED_STATUS; 117 } 118 119 125 128 public void executeAction() throws Exception { 129 TypeFactory typeFactory = FcExplorer.getTypeFactory(FcExplorer.getBootstrapComponent()); 130 String name = name_.getLabel(); 131 List l = new Vector (); 132 Object [] objects = extendedTreeChooserBox_.getObjects(); 133 for (int i=0 ; i < objects.length ; i++) { 134 if (objects[i] != null && objects[i] instanceof InterfaceType) { 135 l.add((InterfaceType)objects[i]); 136 } 137 } 138 cc_.addEntry(name,typeFactory.createFcType((InterfaceType[])l.toArray(new InterfaceType[0]))); 139 } 140 141 } | Popular Tags |