package genius.gui; import java.awt.Component; import java.awt.Desktop; import java.awt.Frame; import java.awt.event.MouseEvent; import java.io.File; import java.io.IOException; import javax.swing.JMenu; import javax.swing.JOptionPane; import org.jdesktop.application.Action; import org.jdesktop.application.FrameView; import org.jdesktop.application.SingleFrameApplication; import genius.gui.boaframework.BOARepositoryUI; import genius.gui.boaparties.BoaPartiesPanel; import genius.gui.domainrepository.DomainRepositoryUI; import genius.gui.panels.tab.CloseListener; import genius.gui.panels.tab.CloseTabbedPane; import genius.gui.repository.PartyRepositoryUI; import genius.gui.session.SessionPanel; import genius.gui.tournament.MultiTournamentPanel; /** * The application's main frame. */ public class NegoGUIView extends FrameView implements MainPanelInterface { // Variables declaration - do not modify//GEN-BEGIN:variables private genius.gui.panels.tab.CloseTabbedPane closeTabbedPane1; private javax.swing.JMenuItem newMultilateralMenuItem; private javax.swing.JMenuItem newMultilateralTournamentMenuItem; private javax.swing.JPanel jPanel1; private javax.swing.JScrollPane jScrollPane2; private javax.swing.JScrollPane jScrollPane3; private javax.swing.JSplitPane jSplitPane1; private javax.swing.JTabbedPane jTabbedPane1; private javax.swing.JPanel mainPanel; private javax.swing.JMenuBar menuBar; private javax.swing.JMenuItem manualMenuItem; private javax.swing.JMenuItem classDocumentationMenuItem; private javax.swing.JMenuItem aboutMenuItem; private javax.swing.JTree treeDomains; private BOARepositoryUI boaTable; public NegoGUIView(SingleFrameApplication app) { super(app); treeDomains = new DomainRepositoryUI(this); boaTable = new BOARepositoryUI(); initComponents(); jTabbedPane1.addTab("Parties", new PartyRepositoryUI()); jTabbedPane1.addTab("Boa Parties", new BoaPartiesPanel()); CloseListener cl = new CloseListener() { @Override public void closeOperation(MouseEvent e, int overTabIndex) { closeTabbedPane1.remove(overTabIndex); } }; closeTabbedPane1.addCloseListener(cl); } /** * @param filename * @return part of filename following the last slash, or full filename if * there is no slash. */ public String GetPlainFileName(String filename) { int i = filename.lastIndexOf('/'); if (i == -1) return filename; return filename.substring(i + 1); } /** * @param filename * @return filename stripped of its extension (the part after the last dot). */ public String StripExtension(String filename) { int i = filename.lastIndexOf('.'); if (i == -1) return filename; return filename.substring(0, i); } public void replaceTab(String title, Component oldComp, Component newComp) { closeTabbedPane1.remove(oldComp); addTab(title, newComp); } @Override public void addTab(String title, Component comp) { closeTabbedPane1.addTab(title, comp); closeTabbedPane1.setSelectedComponent(comp); } private void initComponents() { mainPanel = new javax.swing.JPanel(); jSplitPane1 = new javax.swing.JSplitPane(); jPanel1 = new javax.swing.JPanel(); jTabbedPane1 = new javax.swing.JTabbedPane(); jScrollPane2 = new javax.swing.JScrollPane(); jScrollPane3 = new javax.swing.JScrollPane(); jScrollPane3 = new javax.swing.JScrollPane(); closeTabbedPane1 = new genius.gui.panels.tab.CloseTabbedPane(); menuBar = new javax.swing.JMenuBar(); JMenu startMenu = new javax.swing.JMenu(); newMultilateralMenuItem = new javax.swing.JMenuItem(); newMultilateralTournamentMenuItem = new javax.swing.JMenuItem(); JMenu helpMenu = new javax.swing.JMenu(); manualMenuItem = new javax.swing.JMenuItem(); classDocumentationMenuItem = new javax.swing.JMenuItem(); aboutMenuItem = new javax.swing.JMenuItem(); mainPanel.setName("mainPanel"); // NOI18N jSplitPane1.setName("jSplitPane1"); // NOI18N jPanel1.setName("jPanel1"); // NOI18N jTabbedPane1.setName("jTabbedPane1"); // NOI18N jScrollPane2.setName("jScrollPane2"); // NOI18N jScrollPane2.setViewportView(treeDomains); org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application .getInstance().getContext().getResourceMap(NegoGUIView.class); jTabbedPane1.addTab( resourceMap.getString("jScrollPane2.TabConstraints.tabTitle"), jScrollPane2); // NOI18N org.jdesktop.layout.GroupLayout jPanel1Layout = new org.jdesktop.layout.GroupLayout( jPanel1); jPanel1.setLayout(jPanel1Layout); jPanel1Layout.setHorizontalGroup(jPanel1Layout .createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(jTabbedPane1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 298, Short.MAX_VALUE)); jPanel1Layout.setVerticalGroup(jPanel1Layout .createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(jTabbedPane1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 49, Short.MAX_VALUE)); jSplitPane1.setLeftComponent(jPanel1); jScrollPane3.setViewportView(boaTable); jTabbedPane1.addTab("BOA components", jScrollPane3); closeTabbedPane1.setName("closeTabbedPane1"); // NOI18N jSplitPane1.setRightComponent(closeTabbedPane1); org.jdesktop.layout.GroupLayout mainPanelLayout = new org.jdesktop.layout.GroupLayout( mainPanel); mainPanel.setLayout(mainPanelLayout); mainPanelLayout.setHorizontalGroup(mainPanelLayout .createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(org.jdesktop.layout.GroupLayout.TRAILING, jSplitPane1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 605, Short.MAX_VALUE) ); mainPanelLayout.setVerticalGroup(mainPanelLayout .createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(org.jdesktop.layout.GroupLayout.TRAILING, mainPanelLayout.createSequentialGroup().add(jSplitPane1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 665, Short.MAX_VALUE)) .add(mainPanelLayout .createParallelGroup( org.jdesktop.layout.GroupLayout.LEADING) .add(mainPanelLayout.createSequentialGroup()))); menuBar.setName("menuBar"); // NOI18N startMenu.setText("Start"); startMenu.setName("startMenu"); // NOI18N javax.swing.ActionMap actionMap = org.jdesktop.application.Application .getInstance().getContext() .getActionMap(NegoGUIView.class, this); // Add a new menu item for multi-agent negotiation tournament newMultilateralTournamentMenuItem .setAction(actionMap.get("newMultiAgentTournamentTab")); // NOI18N newMultilateralTournamentMenuItem.setName("newMultilateralMenuItem"); // NOI18N startMenu.add(newMultilateralTournamentMenuItem); newMultilateralMenuItem.setAction(actionMap.get("newMultiNegoSession")); // NOI18N newMultilateralMenuItem.setName("newMultilateralMenuItem"); // NOI18N startMenu.add(newMultilateralMenuItem); menuBar.add(startMenu); menuBar.add(helpMenu); helpMenu.setText(resourceMap.getString("helpMenu.text")); manualMenuItem.setAction(actionMap.get("openManual")); // NOI18N helpMenu.add(manualMenuItem); classDocumentationMenuItem .setAction(actionMap.get("openDocumentation")); // NOI18N helpMenu.add(classDocumentationMenuItem); aboutMenuItem.setAction(actionMap.get("openAbout")); // NOI18N helpMenu.add(aboutMenuItem); setComponent(mainPanel); setMenuBar(menuBar); } /** * Adds a tab to the GUI's start-menu for opening a multi-agent negotiation * tab. */ @Action public void newMultiAgentTournamentTab() { try { addTab("Tournament", new MultiTournamentPanel()); } catch (Exception e) { e.printStackTrace(); } } @Action public void newMultiNegoSession() { try { addTab("Session", new SessionPanel()); } catch (Exception e) { e.printStackTrace(); } } @Action public void openManual() { if (Desktop.isDesktopSupported()) { try { File myFile = new File("doc/userguide.pdf"); Desktop.getDesktop().open(myFile); } catch (IOException ex) { JOptionPane.showMessageDialog(this.getComponent(), "There is no program registered to open PDF files."); } } } @Action public void openDocumentation() { if (Desktop.isDesktopSupported()) { try { File myFile = new File("javadoc/index.html"); Desktop.getDesktop().open(myFile); } catch (IOException ex) { JOptionPane.showMessageDialog(this.getComponent(), "There is no program registered to open HTML files."); } } } @Action public void openAbout() { About about = new About(); about.setVisible(true); } public CloseTabbedPane getMainTabbedPane() { return closeTabbedPane1; } @Override public Frame getMainFrame() { return this.getFrame(); } }