package de.jos.labelgenerator; import java.awt.FlowLayout; import javax.swing.Action; import javax.swing.JLabel; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JPanel; import javax.swing.JSeparator; import org.jdesktop.application.Application; import org.jdesktop.application.ApplicationActionMap; import org.jdesktop.application.ApplicationContext; import org.jdesktop.application.FrameView; import org.jdesktop.application.ResourceMap; import org.jdesktop.application.SingleFrameApplication; import de.jos.labelgenerator.combobox.LayoutComboBoxItem; import de.jos.labelgenerator.configuration.Layout; import de.jos.labelgenerator.dialog.main.MainDialogMenu; import de.jos.labelgenerator.dialog.main.MainDialogPanel; public class AppView extends FrameView { private JMenuBar menuBar = null; private MainDialogPanel mainPanel = null; private JPanel statusPanel = null; private JLabel statusLabel = null; private SingleFrameApplication application = null; private final AppLogic logic = new AppLogic(this); private final ApplicationContext applicationContext = Application.getInstance(LabelGeneratorApp.class).getContext(); private final ResourceMap resourceMap = applicationContext.getResourceMap(AppView.class); public AppView(final SingleFrameApplication application) { super(application); this.application = application; initComponents(); } private void initComponents() { menuBar = createMenuBar(); mainPanel = new MainDialogPanel(application.getContext().getActionMap(logic)); statusLabel = new JLabel(" Ready ..."); statusPanel = new JPanel(); statusPanel.setLayout(new FlowLayout(FlowLayout.LEFT)); statusPanel.add(statusLabel); // update the comboBox for (Layout tmpLayout : logic.getLayouts()) { getMainPanel().getComboBoxLayout().addItem(new LayoutComboBoxItem(tmpLayout)); } getMainPanel().getComboBoxLayout().setSelectedIndex(0); setMenuBar(menuBar); setComponent(mainPanel); setStatusBar(statusPanel); } private JMenu createMenu(final String menuName, final String[] actionNames) { final JMenu menu = new JMenu(); menu.setName(menuName); menu.setText(resourceMap.getString(menuName)); for (final String actionName : actionNames) { if (actionName.equals("---")) { menu.add(new JSeparator()); } else { Action action = getAction(actionName); System.out.println("text: " +action.getValue("text")); System.out.println("actionName : " + actionName + "" + action); final JMenuItem menuItem = new JMenuItem(); menuItem.setAction(getAction(actionName)); menuItem.setName(actionName); //menuItem.setText(getText(menuName + "." + actionName)); //menuItem.setIcon(null); menu.add(menuItem); } } return menu; } private JMenuBar createMenuBar() { menuBar = new JMenuBar(); //final String[] fileMenuActionNames = { "preferences", "---", "quit" }; //menuBar.add(createMenu("menu.file", fileMenuActionNames)); menuBar.add(new MainDialogMenu(logic)); return menuBar; } private Action getAction(final String actionName) { final ApplicationActionMap actionMap = application.getContext().getActionMap(logic); return actionMap.get(actionName); } /** * Runs after the startup has completed and the GUI is up and ready. We show * the first image here, rather than initializing it at startup time, so * loading the first image doesn't impede getting the GUI visible. */ protected void ready() { System.out.println("ready !"); } @Override public JMenuBar getMenuBar() { return menuBar; } public MainDialogPanel getMainPanel() { return mainPanel; } public JPanel getStatusPanel() { return statusPanel; } public JLabel getStatusLabel() { return statusLabel; } public AppLogic getLogic() { return logic; } }