Back to index

wims  3.65+svn20090927
MacroSelectDialog.java
Go to the documentation of this file.
00001 /*
00002  * Created on 26.10.2005
00003  *
00004  */
00005 package rene.zirkel.macro;
00006 
00007 import java.awt.*;
00008 import java.awt.event.*;
00009 import java.util.*;
00010 
00011 import rene.gui.*;
00012 import rene.lister.*;
00013 import rene.zirkel.*;
00014 import rene.zirkel.dialogs.*;
00015 
00020 public class MacroSelectDialog extends HelpCloseDialog 
00021        implements ActionListener
00022 {      Vector Chosen;
00023        Macro O=null;
00024        Lister L;
00025        Frame F;
00026        MacroMenu MM; // MacroMenu
00027        boolean Multiple;
00028        TextArea Comment;
00029        
00033        public MacroSelectDialog (Frame f, MacroMenu mm, boolean multiple)
00034        {      super(f,Zirkel.name("select.title","Select Object"),true);
00035               
00036               MM=mm;
00037               if (!multiple)
00038               {      MacroMenu mmf=MM.findWithFullName(Global.getParameter("select.olddir",""));
00039                      if (mmf!=null) MM=mmf;
00040               }
00041               
00042               F=f;
00043               Multiple=multiple;
00044               
00045               L=new Lister();
00046               add("Center",L);
00047               list();
00048               
00049               L.setMode(multiple,multiple,true,false);
00050               L.addActionListener(this); 
00051               
00052               Panel south=new MyPanel();
00053               south.setLayout(new BorderLayout());
00054               
00055               south.add("Center",Comment=new TextArea("",5,40,TextArea.SCROLLBARS_VERTICAL_ONLY));
00056               Comment.setEditable(false);
00057               
00058               Panel p=new MyPanel();
00059               p.add(new ButtonAction(this,Zirkel.name("select.ok"),"OK")); 
00060               if (multiple)
00061                      p.add(new ButtonAction(this,Zirkel.name("select.all"),"All"));
00062               p.add(new ButtonAction(this,Zirkel.name("select.cancel"),"Close")); 
00063               addHelp(p,"selectmacro");
00064               south.add("South",p);
00065               
00066               add("South",new Panel3D(south));
00067               
00068               pack();
00069               center(f);
00070               Chosen=new Vector();
00071               setSize("macroselect");
00072        }
00073        
00074        public void actionPerformed (ActionEvent e)
00075        {      int offset=(MM.Father!=null)?1:0;
00076               if (e.getSource()==L && ((ListerMouseEvent)e).clickCount()==2)
00077               {      int i=L.getSelectedIndex();
00078                      if (i<0) return;
00079                      if (i<offset)
00080                      {      MM=MM.Father;
00081                             list();
00082                      }
00083                      else
00084                      {      Object o=MM.getV().elementAt(i-offset);
00085                             if (o instanceof MacroMenu)
00086                             {      MM=(MacroMenu)o;
00087                                    list();
00088                             }
00089                             else if (!Multiple)
00090                                    doAction("OK");
00091                      }
00092               }
00093               if (e.getSource()==L && ((ListerMouseEvent)e).clickCount()==1)
00094               {      int i=L.getSelectedIndex();
00095                      if (i<0) return;
00096                      if (i>=offset)
00097                      {      Object o=MM.getV().elementAt(i-offset);
00098                             if (!(o instanceof MacroMenu))
00099                             {      MacroItem mi=(MacroItem)o;  
00100                                    Comment.setText(mi.M.getComment());
00101                             }
00102                             else
00103                             {      Comment.setText("");
00104                             }
00105                      }
00106               }
00107               else super.actionPerformed(e);
00108        }
00109        
00110        public void doAction (String o)
00111        {      noteSize("macroselect");
00112               int offset=(MM.Father!=null)?1:0;
00113               if (o.equals("OK"))
00114               {      Chosen=new Vector();
00115                      int s[]=L.getSelectedIndices();
00116                      for (int i=0; i<s.length; i++)
00117                      {      if (s[i]<offset) continue;
00118                             Object sel=MM.getV().elementAt(s[i]-offset);
00119                             if (sel instanceof MacroItem)
00120                                    Chosen.addElement(sel);
00121                             else
00122                                    add(Chosen,(MacroMenu)sel);
00123                      }
00124                      if (Chosen.size()>0)
00125                      {      doclose();
00126                             Global.setParameter("select.olddir",MM.getFullName());
00127                      }
00128               }
00129               else if (o.equals("All"))
00130               {      for (int i=0; i<MM.getV().size(); i++)
00131                      {      L.select(i+offset);
00132                      }
00133               }
00134               else if (o.equals("Comment"))
00135               {      int i=L.getSelectedIndex();
00136                      if (i<offset) return;
00137                      Object sel=MM.getV().elementAt(i-offset);
00138                      if (sel instanceof MacroItem)
00139                             new CommentDialog(F,
00140                                           ((MacroItem)sel).M.getComment(),
00141                                           Zirkel.name("select.comment.title"),
00142                                           true);
00143               }
00144               else super.doAction(o);
00145        }
00146        
00150        public Macro getMacro ()
00151        {      if (Chosen.size()>0) return ((MacroItem)Chosen.elementAt(0)).M;
00152               return null;
00153        }
00154        
00158        public Vector getMacros ()
00159        {      return Chosen;
00160        }
00161        
00162        public void list ()
00163        {      L.clear();
00164               if (MM.Father!=null) L.addElement(new StringElement("..",Color.black));
00165               Enumeration e=MM.getV().elements();
00166               while (e.hasMoreElements())
00167               {      Object o=e.nextElement();
00168                      if (o instanceof MacroMenu)
00169                      {      MacroMenu mm=(MacroMenu)o;
00170                             L.addElement(new StringElement("/"+mm.getName(),Color.blue.darker()));
00171                      }
00172                      else
00173                      {      MacroItem mi=(MacroItem)o;
00174                             if (mi.M.isProtected())
00175                                    L.addElement(new StringElement(mi.Name,Color.red.darker()));
00176                             else
00177                                    L.addElement(new StringElement(mi.Name,Color.green.darker()));
00178                      }
00179               }
00180               L.updateDisplay();
00181        }
00182        
00183        public void add (Vector v, MacroMenu mm)
00184        {      Enumeration e=mm.getV().elements();
00185               while (e.hasMoreElements())
00186               {      Object o=e.nextElement();
00187                      if (o instanceof MacroMenu) add(v,(MacroMenu)o);
00188                      else v.addElement((MacroItem)o);
00189               }
00190        }
00191        
00192 }
00193