Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
   package jadex.tools.starter;
   
   import jadex.base.Starter;
  
  import java.awt.Color;
  import java.awt.Graphics;
  import java.awt.Insets;
  import java.util.HashMap;
  import java.util.List;
  import java.util.Map;
  
The starter gui allows for starting components platform independently.
  
  public class StarterPanel extends JLayeredPane
  {
  	//-------- static part --------
  
The image icons.
  
  	protected static UIDefaults	iconsnew UIDefaults(new Object[]
  	{
  		"overlay_check", SGUI.makeIcon(StarterPanel.class"/jadex/tools/common/images/overlay_check.png"),
  		"Browse", SGUI.makeIcon(StarterPanel.class,	"/jadex/tools/common/images/dots_small.png"),
  		"delete", SGUI.makeIcon(StarterPanel.class,	"/jadex/tools/common/images/delete_small.png"),
 		"loading", SGUI.makeIcon(StarterPanel.class,	"/jadex/tools/common/images/loading.png")
 	});
 
 	//-------- attributes --------
 
The model.
 
 	protected IModelInfo model;

The error (last loading).
 
 	protected String error;

The last loaded filename.
 
 	protected String lastfile;

The selected parent (if any).
 
 
 	//-------- gui widgets --------
 
The filename.
 
 	protected JTextField filename;
 
 //	/** The file chooser. */
 //	protected JFileChooser filechooser;
 
The configuration.
 
 	protected JComboBox config;

The component type.
 
 	protected JLabel componentnamel;
 	protected JTextField parenttf;

The suspend mode.
 
 	protected JCheckBox suspend;

The termination flags.
 
 	protected JCheckBox mastercb;
 	protected JCheckBox daemoncb;
 	protected JCheckBox autosdcb;
 
 //	/** The application name. */
 //	protected JComboBox appname;
 //	protected JLabel appnamel;
 //	protected DefaultComboBoxModel appmodel;
 	
 	protected JLabel confl;
 	protected JLabel confdummy = new JLabel("Component Name"); // Hack! only for reading sizes
 	protected JLabel filenamel;

The component name generator flag.
 
 	protected JCheckBox genname;

The component arguments.
 
 	protected JPanel arguments;
 	protected List argelems;

loaded from jccproject.xml and kept until gui is refreshed asynchronously.
 
 	protected String[]	loadargs;	

loaded from jccproject.xml and kept until gui is refreshed asynchronously.
 
 	protected String	loadconfig;	

loaded from jccproject.xml and kept until gui is refreshed asynchronously.
 
 	protected String	loadname;	

The component results.
 
 	protected JPanel results;
 	protected List reselems;
 	protected JCheckBox storeresults;
 	protected JComboBox selectavail;
The start button.
 
 	protected JButton start;

The component specific panel.
 
 	protected JPanel componentpanel;

The content panel.
 
 	protected JComponent content;

The loading indicator.
 
 	protected JComponent loading;
 	
 //	/** The application specific panel. */
 //	protected JPanel apppanel;
 	
The external access.
 
 	protected IExternalAccess exta;

The jcc.
 
 	protected IControlCenter jcc;

The spinner for the number of components to start.
 
 	protected JSpinner numcomponents;

The used services.
 
 	protected JPanel requiredservices;

The provided services.
 
 	protected JPanel providedservices;

The model details.
 
 	protected BrowserPane	details;

The split pane.
 
 	protected JSplitPanel splitpanel;

The last divider location.
 
 	protected double lastdivloc;
 	protected boolean closed;
 	
 	//-------- constructors --------
 
Open the GUI.

Parameters:
starter The starter.
 
 	public StarterPanel(final IExternalAccess extaIControlCenter jcc)
 	{
 		this. = exta;
 		this. = jcc;
 		this. = new MultiCollection();
 		
 		this. = true;
 		this. = 0.5;
 		
 		this. = new JPanel(new GridBagLayout());
 
 		// Create the filename combo box.
 		 = new JTextField();
 
 		// The configuration.
 		 = new JComboBox();
 		.setToolTipText("Choose the configuration to start with");
 		{
 			public void itemStateChanged(ItemEvent e)
 			{
 			}
 		});
 
 		// The suspend mode.
 		 = new JCheckBox("Start suspended");
 		.setToolTipText("Start in suspended mode");
 
 		// The component name.
 
 		// The generate flag for the componentname;
 		 = new JCheckBox("Auto generate"false);
 		.setToolTipText("Auto generate the component instance name");
 		{			
 			public void itemStateChanged(ItemEvent e)
 			{
 			}
 		});
 		
 		
 		// The arguments.
 		 = new JPanel(new GridBagLayout());
 		
 		// The results.
 		 = new JPanel(new GridBagLayout());
 		
 		// The required services.
 		
 		// The provided services.
 
 		// The reload button.
 		final JButton reload = new JButton("Reload");
 		reload.setToolTipText("Reload the current model");
 		{
 			public void actionPerformed(ActionEvent ae)
 			{
 			}
 		});
 
 		int mw = (int)reload.getMinimumSize().getWidth();
 		int pw = (int)reload.getPreferredSize().getWidth();
 		int mh = (int)reload.getMinimumSize().getHeight();
 		int ph = (int)reload.getPreferredSize().getHeight();
 
 		// The start button.
 		this. = new JButton("Start");
 		.setToolTipText("Start selected model");
 		
 		{
 			public void actionPerformed(ActionEvent ae)
 			{
 				if(!=null)
 				{
 					final Map rawargs = new HashMap();
 					for(int i=0; i<.size(); i++)
 					{
 						String argname = ((JLabel).getComponent(i*4+1)).getText();
 						String argval = ((JTextField).getComponent(i*4+3)).getText();
 						rawargs.put(argnameargval);
 					}
 					
 					{
 						@XMLClassname("start")
 						{
 							final Future ret = new Future();
 //							ia.getRequiredService("libservice")
 							{
 								public void customResultAvailable(Object result)
 								{
 									
 									Map args = SCollection.createHashMap();
 									String errortext = null;
 									for(Iterator it = rawargs.keySet().iterator(); it.hasNext(); )
 									{
 										String argname = (String)it.next();
 										String argval = (String)rawargs.get(argname);
 										if(argval.length()>0)
 										{
 											Object arg = null;
 											try
 											{
 												arg = new JavaCCExpressionParser().parseExpression(argvalnullnullls.getClassLoader()).getValue(null);
 											}
 											catch(Exception e)
 											{
 												if(errortext==null)
 													errortext = "Error within argument expressions:\n";
 												errortext += argname+" "+e.getMessage()+"\n";
 											}
 											args.put(argnamearg);
 											
 										}
 									}
 									if(errortext==null)
 									{
 										ret.setResult(args);
 									}
 									else
 									{
 										ret.setException(new RuntimeException(errortext));
 									}
 								}
 							}));
 							
 							return ret;
 						}
 					{
 //						JOptionPane.showMessageDialog(SGUI.getWindowParent(StarterPanel.this), errortext, 
 //							"Display Problem", JOptionPane.INFORMATION_MESSAGE);
 						
 						public void customResultAvailable(Object result)
 						{
 							Map args = (Map)result;
 							final String typename = /*ac!=null? ac.getComponentType(filename.getText()):*/ .getText();
 							final String fullname = .getPackage()+"."+.getName();
 							final IModelInfo mymodel = ;
 							final boolean dokilllis = !=null && .isSelected();
 							final String an = .isSelected()?  null.getText();
 							final String configname = (String).getModel().getSelectedItem();
 							final int max = ((Integer).getValue()).intValue();
 								
 							if(an==null// i.e. name auto generate
 							{
 								for(int i=0; i<maxi++)
 								{
 									Future fut = new Future();
 									IResultListener killlistener = dokilllisnew KillListener(mymodelfullnamefutStarterPanel.this): null;
 									createComponent(extaStarterPanel.this.typenameanconfignameargs
 								}
 							}
 							else
 							{
 								Future fut = new Future();
 								IResultListener killlistener = dokilllisnew KillListener(mymodelfullnamefutStarterPanel.this): null;
 								createComponent(extaStarterPanel.this.typenameanconfignameargs
 							}
 						}
 					});
 				}
 			}
 		});
 		.setMinimumSize(new Dimension(mwmh));
 
 		// The reset button.
 		final JButton reset = new JButton("Reset");
 		reset.setToolTipText("Reset all fields");
 		{
 			public void actionPerformed(ActionEvent ae)
 			{
 				reset();
 			}
 		});
 		reset.setMinimumSize(new Dimension(mwmh));
 		reset.setPreferredSize(new Dimension(pwph));
 
 		// Avoid panel being not resizeable when long filename is displayed
 
 		int y = 0;
 	
 		 = new JLabel("Component name");
 			.new Insets(0, 0, 0, 2), 0, 0));
 		JPanel tmp = new JPanel(new BorderLayout());
 		JPanel tmp2 = new JPanel(new BorderLayout());
 		tmp.add(tmp2.);
 		.add(tmpnew GridBagConstraints(1, 0, 4, 1, 1, 0, .,
 			.new Insets(0, 2, 2, 2), 0, 0));
 			
 		.add(new JLabel("Parent"), new GridBagConstraints(0, 1, 1, 1, 0, 0, .,
 			.new Insets(2, 0, 0, 2), 0, 0));
 		 = new JTextField();
 			.new Insets(2, 2, 0, 2), 0, 0));
 	
 		JButton	chooseparentnew JButton(.getIcon("Browse"));
 		chooseparent.setMargin(new Insets(0,0,0,0));
 		chooseparent.setToolTipText("Choose parent");
 		.add(chooseparentnew GridBagConstraints(3, 1, 1, 1, 0, 0, .,
 			.new Insets(2, 2, 0, 2), 0, 0));
 		final ComponentSelectorDialog	agentselector = new ComponentSelectorDialog(thisjcc.getPlatformAccess(), jcc.getCMSHandler());
 		chooseparent.addActionListener(new ActionListener()
 		{
 			public void actionPerformed(ActionEvent e)
 			{
 				IComponentIdentifier newparentagentselector.selectAgent(paid);
 				if(newparent!=null)
 					setParent(newparent);
 			}
 		});
 		JButton	clearparentnew JButton(.getIcon("delete"));
 		clearparent.setMargin(new Insets(0,0,0,0));
 		clearparent.setToolTipText("Clear parent");
 		.add(clearparentnew GridBagConstraints(4, 1, 1, 1, 0, 0, .,
 			.new Insets(2, 2, 0, 2), 0, 0));
 		clearparent.addActionListener(new ActionListener()
 		{
 			public void actionPerformed(ActionEvent e)
 			{
 				setParent(null);
 			}
 		});
 		
 		JPanel flags = new JPanel(new FlowLayout(., 0, 0));
 //		Dimension pd = suspend.getPreferredSize();
 //		Dimension md = suspend.getMinimumSize();
 		 = new JCheckBox("Master");
 		.setToolTipText("If a master component terminates the parent is killed as well");
 //		mastercb.setPreferredSize(pd);
 //		mastercb.setMinimumSize(md);
 		 = new JCheckBox("Daemon");
 		.setToolTipText("A daemon component does not prevent the parent component to terminate");
 //		daemoncb.setPreferredSize(pd);
 //		daemoncb.setMinimumSize(md);
 		 = new JCheckBox("Auto Shutdown");
 		.setToolTipText("Auto shutdown terminates a composite components when all (non daemon) components have terminated");
 //		autosdcb.setPreferredSize(pd);
 //		autosdcb.setMinimumSize(md);
 		
 		flags.add();
 		flags.add();
 		flags.add();
 		flags.add();
 		.add(new JLabel("Flags"), new GridBagConstraints(0, 2, 1, 0, 0, 0, .,
 			.new Insets(2, 2, 0, 2), 0, 0));
 		.add(flagsnew GridBagConstraints(1, 2, 4, 0, 0, 0, .,
 			.new Insets(2, 2, 0, 2), 0, 0));
 //		componentpanel.add(new JButton("bla"), new GridBagConstraints(0, 2, 5, 1, 1, 0, GridBagConstraints.EAST,
 //			GridBagConstraints.BOTH, new Insets(2, 2, 0, 2), 0, 0));
 
 		
 //		componentpanel.add(suspend, new GridBagConstraints(5, 1, 1, 1, 1, 0, GridBagConstraints.EAST,
 //			GridBagConstraints.BOTH, new Insets(2, 2, 0, 2), 0, 0));
 //		mastercb = new JCheckBox("Master");
 //		mastercb.setToolTipText("If a master component terminates the parent is killed as well.");
 //		componentpanel.add(mastercb, new GridBagConstraints(5, 1, 1, 1, 1, 0, GridBagConstraints.EAST,
 //			GridBagConstraints.BOTH, new Insets(2, 2, 0, 2), 0, 0));
 //		daemoncb = new JCheckBox("Daemon");
 //		daemoncb.setToolTipText("A daemon component does not prevent the parent component to terminate.");
 //		componentpanel.add(daemoncb, new GridBagConstraints(6, 1, 1, 1, 1, 0, GridBagConstraints.EAST,
 //			GridBagConstraints.BOTH, new Insets(2, 2, 0, 2), 0, 0));
 //		autosdcb = new JCheckBox("Auto Shutdown");
 //		autosdcb.setToolTipText("Auto shutdown terminates a composite components when all (non daemon) components have terminated.");
 //		componentpanel.add(autosdcb, new GridBagConstraints(7, 1, 1, 1, 1, 0, GridBagConstraints.EAST,
 //			GridBagConstraints.BOTH, new Insets(2, 2, 0, 2), 0, 0));
 					
 //		apppanel = new JPanel(new GridBagLayout());
 //		appnamel = new JLabel("Application name");
 //		apppanel.add(appnamel, new GridBagConstraints(0, 0, 1, 1, 0, 0, GridBagConstraints.WEST,
 //			GridBagConstraints.BOTH, new Insets(0, 0, 0, 2), 0, 0));
 //		apppanel.add(appname, new GridBagConstraints(1, 0, 4, 1, 1, 0, GridBagConstraints.EAST,
 //			GridBagConstraints.BOTH, new Insets(0, 2, 0, 2), 0, 0));
 		
 		JPanel upper = new JPanel(new GridBagLayout());
 		upper.setBorder(new TitledBorder(new EtchedBorder(.), " Settings "));
 		 = new JLabel("Filename");
 		upper.add(new GridBagConstraints(0, y, 1, 1, 0, 0,
 			..new Insets(2,2,2,2), 0, 0));
 		upper.add(new GridBagConstraints(1, y, 4, 1, 1, 0,
 			..new Insets(2,2,2,2), 0, 0));
 //		upper.add(browse, new GridBagConstraints(4, y, 1, 1, 0, 0,
 //			GridBagConstraints.WEST, GridBagConstraints.BOTH, new Insets(2,2,2,2), 0, 0));
 		y++;
 		 = new JLabel("Configuration");
 		upper.add(new GridBagConstraints(0, y, 1, 1, 0, 0, .,
 			.new Insets(2, 2, 2, 2), 0, 0));
 		upper.add(new GridBagConstraints(1, y, 4, 1, 1, 0, .,
 			.new Insets(2, 2, 2, 2), 0, 0));
 //		upper.add(suspend, new GridBagConstraints(2, y, 3, 1, 0, 0, GridBagConstraints.WEST,
 //			GridBagConstraints.BOTH, new Insets(2, 2, 2, 2), 0, 0));
 		y++;
 		upper.add(new GridBagConstraints(0, y, 5, 1, 1, 0, .,
 			.new Insets(2, 2, 2, 2), 0, 0));
 //		y++;
 //		upper.add(apppanel, new GridBagConstraints(0, y, 5, 1, 1, 0, GridBagConstraints.WEST,
 //			GridBagConstraints.BOTH, new Insets(2, 2, 2, 2), 0, 0));
 
 		JPanel middle = new JPanel(new GridBagLayout());
 		
 		y = 0;
 		y++;
 		middle.add(new GridBagConstraints(0, y, 5, 1, 1, 0, .,
 			.new Insets(0, 0, 0, 0), 0, 0));
 		y++;
 		middle.add(new GridBagConstraints(0, y, 5, 1, 1, 0, .,
 			.new Insets(0, 0, 0, 0), 0, 0));
 		y++;
 		middle.add(new GridBagConstraints(0, y, 5, 1, 1, 0, .,
 			.new Insets(0, 0, 0, 0), 0, 0));
 		y++;
 		middle.add(new GridBagConstraints(0, y, 5, 1, 1, 1, .,
 			.new Insets(0, 0, 0, 0), 0, 0));
 		
 		JPanel buts = new JPanel(new GridBagLayout());
 				new Insets(2, 2, 2, 2), 0, 0));
 		buts.add(reloadnew GridBagConstraints(1, 0, 1, 1, 0, 0, ..,
 				new Insets(2, 2, 2, 2), 0, 0));
 		buts.add(resetnew GridBagConstraints(2, 0, 1, 1, 0, 0, ..,
 				new Insets(2, 2, 2, 2), 0, 0));
 		
 		y++;
 		upper.add(butsnew GridBagConstraints(0, y, 5, 1, 1, 0, .,
 			.new Insets(2, 2, 2, 2), 0, 0));
 
 		
 //		JSplitPanel sp = new JSplitPanel(JSplitPanel.VERTICAL_SPLIT);
 //		sp.add(upper);
 //		sp.add(new JScrollPane(middle));
 //		sp.setOneTouchExpandable(true);
 		
 		y = 0;
 		.add(uppernew GridBagConstraints(0, y, 5, 1, 1, 0, .,
 			.new Insets(0, 0, 0, 0), 0, 0));
 //		y++;
 //		content.add(new JScrollPane(middle), new GridBagConstraints(0, y, 5, 1, 1, 1, GridBagConstraints.WEST,
 //			GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0));
 
 		
 		/*y++;
 		componentnamel = new JLabel("Component name");
 		content.add(componentnamel, new GridBagConstraints(0, y, 1, 1, 0, 0, GridBagConstraints.WEST,
 				GridBagConstraints.BOTH, new Insets(2, 2, 2, 2), 0, 0));
 		JPanel tmp = new JPanel(new BorderLayout());
 		tmp.add(componentname, "Center");
 		tmp.add(gencomponentname, "East");
 		//content.add(componentname, new GridBagConstraints(1, y, 2, 1, 1, 0, GridBagConstraints.WEST,
 		//			GridBagConstraints.BOTH, new Insets(2, 2, 2, 2), 0, 0));
 		content.add(tmp, new GridBagConstraints(1, y, 4, 1, 0, 0, GridBagConstraints.EAST,
 					GridBagConstraints.BOTH, new Insets(2, 2, 2, 2), 0, 0));
 
 		y++;
 		argumentsl = new JLabel("Arguments");
 		content.add(argumentsl, new GridBagConstraints(0, y, 1, 1, 0, 0, GridBagConstraints.WEST,
 				GridBagConstraints.BOTH, new Insets(2, 2, 2, 2), 0, 0));
 		content.add(arguments, new GridBagConstraints(1, y, 4, 1, 1, 0, GridBagConstraints.WEST,
 				GridBagConstraints.BOTH, new Insets(2, 2, 2, 2), 0, 0));*/
 
 		/*y++;
 		content.add(new JButton("1"), new GridBagConstraints(0, y, 1, 1, 0, 0, GridBagConstraints.WEST,
 				GridBagConstraints.BOTH, new Insets(2, 2, 2, 2), 0, 0));
 		content.add(new JButton("2"), new GridBagConstraints(1, y, 1, 1, 0, 0, GridBagConstraints.WEST,
 				GridBagConstraints.BOTH, new Insets(2, 2, 2, 2), 0, 0));
 		content.add(new JButton("3"), new GridBagConstraints(2, y, 1, 1, 0, 0, GridBagConstraints.WEST,
 				GridBagConstraints.BOTH, new Insets(2, 2, 2, 2), 0, 0));
 		content.add(new JButton("4"), new GridBagConstraints(3, y, 1, 1, 0, 0, GridBagConstraints.WEST,
 				GridBagConstraints.BOTH, new Insets(2, 2, 2, 2), 0, 0));
 		content.add(new JButton("5"), new GridBagConstraints(4, y, 1, 1, 0, 0, GridBagConstraints.WEST,
 				GridBagConstraints.BOTH, new Insets(2, 2, 2, 2), 0, 0));
 */
 
 //		HelpBroker hb = SHelp.setupHelp(this, "tools.starter");
 //		if(hb!=null)
 //		{
 //			JButton help = new JButton("Help");
 //			help.setToolTipText("Activate JavaHelp system");
 //			help.addActionListener(new CSH.DisplayHelpFromSource(hb));
 //			help.setMinimumSize(new Dimension(mw, mh));
 //			help.setPreferredSize(new Dimension(pw, ph));
 //			buts.add(help, new GridBagConstraints(3, 0, 1, 1, 0, 0, GridBagConstraints.EAST, GridBagConstraints.NONE,
 //					new Insets(2, 2, 2, 2), 0, 0));
 //		}
 
 		//content.add(prodmode, new GridBagConstraints(3, 4, 1, 1, 1, 0,
 		//	GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(2,2,2,2), 0, 0));
 		
 		new BrowserPane();
 		
 //		JPanel bottom = new JPanel(new BorderLayout());
 //		bottom.add(buts, BorderLayout.NORTH);
 //		bottom.add(new JScrollPane(details), BorderLayout.CENTER);
 		
 		.add(new JScrollPane(middle));
 		
 //		y++;
 //		content.add(buts, new GridBagConstraints(0, y, 5, 1, 0, 0, GridBagConstraints.EAST, GridBagConstraints.NONE,
 //			new Insets(2, 2, 2, 2), 0, 0));
 
 //		y++;
 //		details	= new BrowserPane();
 //		content.add(new JScrollPane(details), new GridBagConstraints(0, y, 5, 1, 1, 1, GridBagConstraints.CENTER,
 //			GridBagConstraints.BOTH, new Insets(2, 2, 2, 2), 0, 0));
 
 		y++;
 			.new Insets(2, 2, 2, 2), 0, 0));
 
 		// Create overlay component displayed while loading.
 		this.new JPanel(new BorderLayout())
 		{
 			protected void paintComponent(Graphics g)
 			{
 				g.fillRect(0, 0, getWidth(), getHeight());
 				super.paintComponent(g);
 			}
 		};
 		JLabel	labelnew JLabel("Loading...".getIcon("loading"), .);
 		label.setFont(label.getFont().deriveFont(label.getFont().getSize()*2f)); // Use f otherwise interpreted as int (i.e. style instead size).
 		.setBackground(new Color(0, 0, 0, 128));
 		
 		this.add(new Integer(0));
 		this.add(new Integer(1));
 		
 		// Manually resize inner panels when layered pane is resized
 		// as layered pane does not support separate layout manager for each layer (grrr).
 		{
 			public void componentShown(ComponentEvent e)
 			{
 			}
 			
 			public void componentResized(ComponentEvent e)
 			{
 				Rectangle	boundsgetBounds();
 				Insets	insetsgetInsets();
 				bounds.xinsets.left;
 				bounds.yinsets.top;
 				bounds.width	-= insets.left + insets.right;
 				bounds.height	-= insets.top + insets.bottom;
 				.setBounds(bounds);
 				.setBounds(bounds);
 				List	compsnew ArrayList();
 				comps.add();
 				comps.add();
 				for(int i=0; i<comps.size(); i++)
 				{
 					Container	comp	= (Container)comps.get(i);
 					comp.invalidate();
 					for(int j=0; j<comp.getComponentCount(); j++)
 					{
 						if(comp.getComponent(jinstanceof Container)
 						{
 							comps.add(i+1, comp.getComponent(j));
 						}
 					}
 				}
 				for(int i=0; i<comps.size(); i++)
 				{
 					Container	comp	= (Container)comps.get(i);
 					comp.doLayout();
 					comp.repaint();
 				}
 //				content.invalidate();
 //				content.doLayout();
 //				content.repaint();
 			}
 			
 			public void componentMoved(ComponentEvent e)
 			{
 			}
 			
 			public void componentHidden(ComponentEvent e)
 			{
 			}
 		});
 	}

Reload the model.

Parameters:
adf The adf.
 
 	public void reloadModel()
 	{
 		if(==null)
 			return;
 		
 		String toload = ;
 		 = null;
 		loadModel(toload);
 	}

Load an component model.

Parameters:
adf The adf to load.
 
 	public IFuture	loadModel(final String adf)
 	{
 		final Future	retnew Future();
 		
 		// Don't load same model again (only on reload).
 		if(adf!=null && !=null && SUtil.convertPathToRelative(adf).equals(SUtil.convertPathToRelative()))
 		{
 			ret.setResult(null);
 		}
 		else
 		{
 			// Reset start flags for new model.
 			
 			adf;
 			
 	//		System.out.println("loadModel: "+adf);
 	//		String	error	= null;
 			
 			if(adf!=null)
 			{
 				{
 					public void customResultAvailable(Object result)
 					{
 						if(((Boolean)result).booleanValue())
 						{
 							{
 								public void customResultAvailable(Object result)
 								{
 									 = (IModelInfo)result;
 									ret.setResult(null);
 								}
 								
 								public void customExceptionOccurred(Exception exception)
 								{
 									 = null;
 									StringWriter sw = new StringWriter();
 									exception.printStackTrace(new PrintWriter(sw));
 									 = sw.toString();
 									ret.setResult(null);
 								}
 							});
 						}
 						else
 						{
 							 = null;
 							ret.setResult(null);
 						}
 					}
 				});
 			}
 			else
 			{
 				 = null;
 				 = null;
 				ret.setResult(null);
 			}
 		}
 		
 		return ret;
 	}

Show the loading panel and remove it when the future is done.
 
 	protected void	showLoading(IFuture fut)
 	{
 		{
 			public void customResultAvailable(Object result)
 			{
 			}
 			public void customExceptionOccurred(Exception exception)
 			{
 			}
 		});
 	}


Update the GUI for a new model.

Parameters:
adf The adf.
icon The component icon (if available).
 
 	{
 		assert SwingUtilities.isEventDispatchThread();
 
 //		System.out.println("updategui "+adf);
 		
 		for(int i=0; i<lis.lengthi++)
 		
 		// Add all known component configuration names to the config chooser.
 		
 		for(int i = 0; i<confignames.lengthi++)
 		{
 		}
 		
 		if(!=null)
 		{
 			null;
 		}
 		else if(confignames.length>0)
 		{
 			.getModel().setSelectedItem(confignames[0]);
 		}
 		
 		if(!=null && .isStartable())
 		{
 			
 			
 			
 			null;
 		}
 		else
 		{
 			.setVisible(false);
 			
 			
 		}
 				
 		
 		if(!=null)
 		{
 		}
 
 		final IErrorReport report = !=null.getReport(): null;
 		if(report!=null)
 		{
 		}
 		else if(!=null)
 		{
 		}
 		else if(!=null)
 		{
 		}
 		else
 		{
 		}
 
 		// Adjust state of start button depending on model checking state.
 		.setEnabled(!=null&& .isStartable() && report==null);
 	
 		for(int i=0; i<lis.lengthi++)
 	
 		{
 			if(!)
 			{
 //				System.out.println("last: "+lastdivloc);
 				 = true;
 			}
 		}
 		else if()
 		{
 			 = false;
 		}
 	}

Refresh the flags.
 
 	protected void refreshFlags()
 	{
 		if(!=null)
 		{
 			boolean s = .getSuspend(c)==null.isSelected(): .getSuspend(c).booleanValue();
 			boolean m = .getMaster(c)==null.isSelected(): .getMaster(c).booleanValue();
			boolean d = .getDaemon(c)==null.isSelected(): .getDaemon(c).booleanValue();
//			System.out.println("smda: "+s+" "+m+" "+d+" "+a);
	}

Get the properties.

Parameters:
props The properties.
		final Future	retnew Future();
		final String	name.getText();
			@XMLClassname("convertPath")
				Future	retnew Future();
				SComponentFactory.loadModel(ia.getExternalAccess(), name)
					public void customResultAvailable(Object result)
					public void exceptionOccurred(Exception exception)
				}));
				return ret;
			public void customResultAvailable(Object result)
				Properties	propsnew Properties();
				if(result!=nullprops.addProperty(new Property("model", (String)result));
				if(c!=nullprops.addProperty(new Property("config"c));
				props.addProperty(new Property("startsuspended"""+.isSelected()));
				props.addProperty(new Property("autogenerate"""+.isSelected()));
				props.addProperty(new Property("number"""+.getValue()));
				props.addProperty(new Property("name".getText()));
				// Cannot get components during shutdown as awt blocks tree lock.
				for(int i=0; !=null && i<.size() && !Starter.isShutdown(); i++)
					props.addProperty(new Property("argument"valt.getText()));
				ret.setResult(props);
		});
		return ret;
	}

Set the properties.

Parameters:
props The propoerties.
	public void setProperties(Properties props)
		// Settings are invoke later'd due to getting overridden otherwise.!?
//		System.out.println("setP: "+Thread.currentThread().getName());
		Property[]	aargsprops.getProperties("argument");
		this. = new String[aargs.length];
		for(int i=0; i<aargs.lengthi++)
			[i] = aargs[i].getValue();
		final String mo = props.getStringProperty("model");
		if(mo!=null)
			 = mo;
			props.getStringProperty("config");
			props.getStringProperty("name");
		setStartSuspended(props.getBooleanProperty("startsuspended"));
		setAutoGenerate(props.getBooleanProperty("autogenerate"));
	}

Reset the gui.
	public void reset()
		null;