KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > calipso > xmleditor > XmlEditorMenu


1 package com.calipso.xmleditor;
2
3 import javax.swing.*;
4 import javax.swing.event.MenuListener JavaDoc;
5 import javax.swing.event.MenuEvent JavaDoc;
6 import java.awt.event.ActionListener JavaDoc;
7 import java.awt.event.ActionEvent JavaDoc;
8 import java.awt.*;
9 import java.util.LinkedList JavaDoc;
10 import java.util.Iterator JavaDoc;
11
12 /**
13  *
14  * User: jbassino
15  * Date: 25/06/2004
16  * Time: 14:08:17
17  *
18  */

19 public class XmlEditorMenu extends JMenuBar implements ActionListener JavaDoc, MenuListener JavaDoc {
20
21   private static final int LIMIT = 20;
22   private static final String JavaDoc defaultEmpty = "empty...";
23
24   private JMenuItem mnuItemNewFromXSD;
25   private JMenuItem mnuItemLoadFromXSD;
26   private JMenuItem mnuItemLoadJustXML;
27   private JMenuItem mnuItemLoadXSD;
28   private JMenuItem mnuUnloadXSD;
29   private JMenuItem mnuItemGenerateReportFromSQL;
30   private JMenuItem mnuItemGenerateReportLayout;
31   private JMenu mnuRecentXml;
32   private JMenu mnuRecentXsd;
33   private LinkedList JavaDoc listRecentXml = new LinkedList JavaDoc();
34   private LinkedList JavaDoc listRecentXsd = new LinkedList JavaDoc();
35   private XmlEditorUI xmlEditorUI;
36   private JMenuItem mnuItemSave;
37   private JMenuItem mnuItemSaveAs;
38   private JMenuItem mnuItemGenerateReportView;
39
40   /**
41    * Crea el menu superior de la aplicacion.
42    * @param ui
43    */

44   public XmlEditorMenu(XmlEditorUI ui) {
45     xmlEditorUI = ui;
46     JMenu mnuFile = new JMenu("Archivo");
47     JMenu mnuNew = new JMenu("Nuevo");
48     JMenu mnuLoad = new JMenu("Cargar");
49     JMenu mnuLoadXml = new JMenu("XML");
50     JMenu mnuCreateXml = new JMenu("Generar XML");
51     JMenu mnuRecent = new JMenu("Recientes");
52     mnuRecentXml = new JMenu("Recientes XML");
53     mnuRecentXsd = new JMenu("Recientes XSD");
54     mnuRecent.add(mnuRecentXml);
55     mnuRecent.add(mnuRecentXsd);
56     mnuRecentXml.addMenuListener(this);
57     mnuRecentXsd.addMenuListener(this);
58
59     mnuItemNewFromXSD = new JMenuItem("Nuevo desde actual XSD");
60     mnuItemNewFromXSD.addActionListener(this);
61     mnuNew.add(mnuItemNewFromXSD);
62
63     mnuItemLoadFromXSD = new JMenuItem("Usar xsd");
64     mnuItemLoadFromXSD.addActionListener(this);
65     mnuLoadXml.add(mnuItemLoadFromXSD);
66
67     mnuItemLoadJustXML = new JMenuItem("No usar xsd");
68     mnuItemLoadJustXML.addActionListener(this);
69     mnuLoadXml.add(mnuItemLoadJustXML);
70
71     mnuLoad.add(mnuLoadXml);
72
73     mnuItemLoadXSD = new JMenuItem("XSD");
74     mnuItemLoadXSD.addActionListener(this);
75     mnuLoad.add(mnuItemLoadXSD);
76
77     mnuLoad.add(mnuRecent);
78
79     mnuItemGenerateReportFromSQL = new JMenuItem("Crear Reporte desde SQL");
80     mnuItemGenerateReportFromSQL.addActionListener(this);
81     mnuCreateXml.add(mnuItemGenerateReportFromSQL);
82
83     mnuItemGenerateReportView = new JMenuItem("Crear ReportView de ReportDefinition");
84     mnuItemGenerateReportView.addActionListener(this);
85     mnuCreateXml.add(mnuItemGenerateReportView);
86
87     mnuItemGenerateReportLayout = new JMenuItem("Generar ReportLayout");
88     mnuItemGenerateReportLayout.addActionListener(this);
89     mnuCreateXml.add(mnuItemGenerateReportLayout);
90     mnuCreateXml.setMnemonic("g".charAt(0));
91
92     mnuItemSave = new JMenuItem("Guardar XML");
93     mnuItemSave.addActionListener(this);
94
95     mnuItemSaveAs = new JMenuItem("Guardar como XML");
96     mnuItemSaveAs.addActionListener(this);
97
98     mnuUnloadXSD = new JMenuItem("Descargar xsd");
99     mnuUnloadXSD.addActionListener(this);
100
101     mnuFile.add(mnuNew);
102     mnuFile.add(mnuLoad);
103     mnuFile.add(mnuUnloadXSD);
104     mnuFile.add(mnuItemSave);
105     mnuFile.add(mnuItemSaveAs);
106     mnuFile.setMnemonic("a".charAt(0));
107
108     add(mnuFile);
109     add(mnuCreateXml);
110   }
111
112   public void actionPerformed(ActionEvent JavaDoc e) {
113     if (e.getSource() == mnuItemLoadFromXSD) {
114       getXmlEditorUI().loadFromXml(false,"");
115     }else if (e.getSource() == mnuItemLoadJustXML) {
116       getXmlEditorUI().loadFromXml(true,"");
117     }else if (e.getSource() == mnuItemLoadXSD) {
118       getXmlEditorUI().loadFromXsd();
119     }else if (e.getSource() == mnuItemGenerateReportFromSQL) {
120       getXmlEditorUI().getParametersFromPane();
121     }else if (e.getSource() == mnuItemGenerateReportView){
122       getXmlEditorUI().generateReportView();
123     }else if (e.getSource() == mnuItemGenerateReportLayout) {
124       getXmlEditorUI().generateReportLayout();
125     }else if (e.getSource() == mnuItemSave){
126       getXmlEditorUI().save(true);
127     }else if (e.getSource() == mnuUnloadXSD){
128       getXmlEditorUI().unLoadxsd();
129     }else if (e.getSource() == mnuItemSaveAs){
130       getXmlEditorUI().save(false);
131     }else if (isRecentMenu(e.getSource())) {
132       getXmlEditorUI().openRecent(((JMenuItem) e.getSource()).getName());
133     }
134   }
135
136   public XmlEditorUI getXmlEditorUI() {
137     return xmlEditorUI;
138   }
139
140   public void setXmlEditorUI(XmlEditorUI xmlEditorUI) {
141     this.xmlEditorUI = xmlEditorUI;
142   }
143
144   public void menuSelected(MenuEvent JavaDoc e) {
145     if (e.getSource() == mnuRecentXml) {
146       addMenuItems(mnuRecentXml, listRecentXml);
147       listRecentXml = new LinkedList JavaDoc();
148     }
149     else
150       if (e.getSource() == mnuRecentXsd) {
151         addMenuItems(mnuRecentXsd, listRecentXsd);
152         listRecentXsd = new LinkedList JavaDoc();
153       }
154   }
155
156   /**
157    * Agrega los items de la lista al menu
158    * @param menu
159    * @param list
160    */

161   private void addMenuItems(JMenu menu, LinkedList JavaDoc list) {
162     if (list.isEmpty() && menu.getMenuComponents().length == 0) {
163       JMenuItem empty = new JMenuItem(defaultEmpty);
164       empty.setName(defaultEmpty);
165       menu.add(empty);
166     } else {
167       if (!list.isEmpty()) {
168         for (Iterator JavaDoc iterator = list.iterator(); iterator.hasNext();) {
169           String JavaDoc s = (String JavaDoc) iterator.next();
170           if(!hasItem(menu, s)){
171             JMenuItem item = new JMenuItem(getNameFor(s));
172             item.setName(s);
173             item.addActionListener(this);
174             menu.add(item);
175           }
176         }
177       }
178       if (menu.getMenuComponents().length > 1 && menu.getMenuComponents()[0].getName().equalsIgnoreCase(defaultEmpty)) {
179         menu.remove(0);
180       }
181     }
182   }
183
184   /**
185    * Verifica si el menu contiene algun item con nombre igual al parametro s.
186    * @param menu
187    * @param s
188    * @return
189    */

190   private boolean hasItem(JMenu menu, String JavaDoc s) {
191     Component[] components = menu.getMenuComponents();
192     for(int i=0; i<components.length; i++){
193       if(components[i].getName()==s){
194         return true;
195       }
196     }
197     return false;
198   }
199
200   /**
201    * Verifica si el source de una accion pertenece a alguno de los menus de objetos utilizados recientemente
202    * @param source
203    * @return
204    */

205   private boolean isRecentMenu(Object JavaDoc source) {
206     if (!doIsRecentMenu(mnuRecentXml, source)) {
207       return doIsRecentMenu(mnuRecentXsd, source);
208     }
209     return true;
210   }
211
212   /**
213    * Verifica si el source de un evento pertenece al menu especificado
214    * @param menu
215    * @param source
216    * @return
217    */

218   private boolean doIsRecentMenu(JMenu menu, Object JavaDoc source) {
219     Component[] array = menu.getMenuComponents();
220     String JavaDoc name = ((JMenuItem) source).getName();
221     for (int i = 0; i < array.length; i++) {
222       if (array[i].getName().equalsIgnoreCase(name)) {
223         return true;
224       }
225     }
226     return false;
227   }
228
229   /**
230    * Obtiene un nombre para menu a partir de un path
231    * @param s
232    * @return
233    */

234   private String JavaDoc getNameFor(String JavaDoc s) {
235     int index = Math.max(s.lastIndexOf("\\"), s.lastIndexOf("/"));
236     return s.substring(index + 1).trim();
237   }
238
239   public void menuDeselected(MenuEvent JavaDoc e) {
240   }
241
242   public void menuCanceled(MenuEvent JavaDoc e) {
243   }
244
245   /**
246    * Agrega el parametro a la lista de XSDs seleccionados recientemente
247    * @param file
248    */

249   public void addXsdRecentItem(String JavaDoc file) {
250     addItem(listRecentXsd,file);
251   }
252
253   /**
254    * Agrega el parametro a la lista de XMLs seleccionados recientemente
255    * @param file
256    */

257   public void addXmlRecentItem(String JavaDoc file) {
258     addItem(listRecentXml, file);
259   }
260
261   /**
262    * Agrega el objeto a la lista verificando que no halla llegado al tope de items y que no sea un item repetido
263    * @param list
264    * @param path
265    */

266   private void addItem(LinkedList JavaDoc list, String JavaDoc path) {
267     if(!list.contains(path)){
268       if(list.size() < LIMIT){
269         list.addLast(path);
270       }
271     }
272   }
273
274 }
275
Popular Tags