Exemplo n.º 1
0
  private void createGUI() {
    setTitle(WINDOW_TITLE);

    setIconImages(ClientHelper.getCmisIconImages());

    // Mac OS X goodies
    if (ClientHelper.isMacOSX()) {
      try {
        Class<?> macAppClass = Class.forName("com.apple.eawt.Application");
        Method macAppGetApp = macAppClass.getMethod("getApplication", (Class<?>[]) null);
        Object macApp = macAppGetApp.invoke(null, (Object[]) null);

        ImageIcon icon = ClientHelper.getCmisIconImage();
        if (icon != null) {
          try {
            macAppClass
                .getMethod("setDockIconImage", new Class<?>[] {Image.class})
                .invoke(macApp, new Object[] {icon.getImage()});
          } catch (Exception e) {
            LOG.debug("Could not set dock icon!", e);
          }
        }

        try {
          Class<?> fullscreenClass = Class.forName("com.apple.eawt.FullScreenUtilities");
          fullscreenClass
              .getMethod("setWindowCanFullScreen", new Class<?>[] {Window.class, Boolean.TYPE})
              .invoke(fullscreenClass, this, true);
        } catch (Exception e) {
          LOG.debug("Could not add fullscreen button!", e);
        }
      } catch (Exception e) {
        LOG.debug("Could not get com.apple.eawt.Application object!", e);
      }
    }

    setLayout(new BorderLayout());

    final ClientFrame thisFrame = this;
    loginDialog = new LoginDialog(this);
    logFrame = new LogFrame();
    infoDialog = new InfoDialog(this);

    Container pane = getContentPane();

    toolBar = new JToolBar("CMIS Toolbar", JToolBar.HORIZONTAL);

    toolbarButton = new JButton[10];

    toolbarButton[BUTTON_CONNECT] =
        new JButton(
            "Connection",
            new ConnectIcon(ClientHelper.TOOLBAR_ICON_SIZE, ClientHelper.TOOLBAR_ICON_SIZE));
    toolbarButton[BUTTON_CONNECT].setDisabledIcon(
        new ConnectIcon(ClientHelper.TOOLBAR_ICON_SIZE, ClientHelper.TOOLBAR_ICON_SIZE, false));
    toolbarButton[BUTTON_CONNECT].addActionListener(
        new ActionListener() {
          public void actionPerformed(ActionEvent e) {
            showLoginForm();
          }
        });

    toolBar.add(toolbarButton[BUTTON_CONNECT]);

    toolBar.addSeparator();

    toolbarButton[BUTTON_REPOSITORY_INFO] =
        new JButton(
            "Repository Info",
            new RepositoryInfoIcon(ClientHelper.TOOLBAR_ICON_SIZE, ClientHelper.TOOLBAR_ICON_SIZE));
    toolbarButton[BUTTON_REPOSITORY_INFO].setDisabledIcon(
        new RepositoryInfoIcon(
            ClientHelper.TOOLBAR_ICON_SIZE, ClientHelper.TOOLBAR_ICON_SIZE, false));
    toolbarButton[BUTTON_REPOSITORY_INFO].setEnabled(false);
    toolbarButton[BUTTON_REPOSITORY_INFO].addActionListener(
        new ActionListener() {
          public void actionPerformed(ActionEvent e) {
            new RepositoryInfoFrame(model);
          }
        });

    toolBar.add(toolbarButton[BUTTON_REPOSITORY_INFO]);

    toolbarButton[BUTTON_TYPES] =
        new JButton(
            "Types", new TypesIcon(ClientHelper.TOOLBAR_ICON_SIZE, ClientHelper.TOOLBAR_ICON_SIZE));
    toolbarButton[BUTTON_TYPES].setDisabledIcon(
        new TypesIcon(ClientHelper.TOOLBAR_ICON_SIZE, ClientHelper.TOOLBAR_ICON_SIZE, false));
    toolbarButton[BUTTON_TYPES].setEnabled(false);
    toolbarButton[BUTTON_TYPES].addActionListener(
        new ActionListener() {
          public void actionPerformed(ActionEvent e) {
            new TypesFrame(model);
          }
        });

    toolBar.add(toolbarButton[BUTTON_TYPES]);

    toolbarButton[BUTTON_QUERY] =
        new JButton(
            "Query", new QueryIcon(ClientHelper.TOOLBAR_ICON_SIZE, ClientHelper.TOOLBAR_ICON_SIZE));
    toolbarButton[BUTTON_QUERY].setDisabledIcon(
        new QueryIcon(ClientHelper.TOOLBAR_ICON_SIZE, ClientHelper.TOOLBAR_ICON_SIZE, false));
    toolbarButton[BUTTON_QUERY].setEnabled(false);
    toolbarButton[BUTTON_QUERY].addActionListener(
        new ActionListener() {
          public void actionPerformed(ActionEvent e) {
            new QueryFrame(model);
          }
        });

    toolBar.add(toolbarButton[BUTTON_QUERY]);

    toolbarButton[BUTTON_CHANGELOG] =
        new JButton(
            "Change Log",
            new ChangeLogIcon(ClientHelper.TOOLBAR_ICON_SIZE, ClientHelper.TOOLBAR_ICON_SIZE));
    toolbarButton[BUTTON_CHANGELOG].setDisabledIcon(
        new ChangeLogIcon(ClientHelper.TOOLBAR_ICON_SIZE, ClientHelper.TOOLBAR_ICON_SIZE, false));
    toolbarButton[BUTTON_CHANGELOG].setEnabled(false);
    toolbarButton[BUTTON_CHANGELOG].addActionListener(
        new ActionListener() {
          public void actionPerformed(ActionEvent e) {
            new ChangeLogFrame(model);
          }
        });

    toolBar.add(toolbarButton[BUTTON_CHANGELOG]);

    toolbarButton[BUTTON_CONSOLE] =
        new JButton(
            "Console",
            new ConsoleIcon(ClientHelper.TOOLBAR_ICON_SIZE, ClientHelper.TOOLBAR_ICON_SIZE));
    toolbarButton[BUTTON_CONSOLE].setDisabledIcon(
        new ConsoleIcon(ClientHelper.TOOLBAR_ICON_SIZE, ClientHelper.TOOLBAR_ICON_SIZE, false));
    toolbarButton[BUTTON_CONSOLE].setEnabled(false);
    toolbarButton[BUTTON_CONSOLE].addActionListener(
        new ActionListener() {
          public void actionPerformed(ActionEvent e) {
            toolbarConsolePopup.show(
                toolbarButton[BUTTON_CONSOLE], 0, toolbarButton[BUTTON_CONSOLE].getHeight());
          }
        });

    toolBar.add(toolbarButton[BUTTON_CONSOLE]);

    toolbarConsolePopup = new JPopupMenu();
    for (FileEntry fe : readScriptLibrary()) {
      JMenuItem menuItem = new JMenuItem(fe.getName());
      final URI file = fe.getFile();
      menuItem.addActionListener(
          new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
              ClientHelper.openConsole(ClientFrame.this, model, file);
            }
          });
      toolbarConsolePopup.add(menuItem);
    }

    toolbarButton[BUTTON_TCK] =
        new JButton(
            "TCK", new TckIcon(ClientHelper.TOOLBAR_ICON_SIZE, ClientHelper.TOOLBAR_ICON_SIZE));
    toolbarButton[BUTTON_TCK].setDisabledIcon(
        new TckIcon(ClientHelper.TOOLBAR_ICON_SIZE, ClientHelper.TOOLBAR_ICON_SIZE, false));
    toolbarButton[BUTTON_TCK].setEnabled(false);
    toolbarButton[BUTTON_TCK].addActionListener(
        new ActionListener() {
          public void actionPerformed(ActionEvent e) {
            new TckDialog(thisFrame, model);
          }
        });

    toolBar.add(toolbarButton[BUTTON_TCK]);

    toolBar.addSeparator();

    toolbarCreatePopup = new JPopupMenu();
    documentMenuItem = new JMenuItem("Document");
    documentMenuItem.setEnabled(true);
    toolbarCreatePopup.add(documentMenuItem);
    documentMenuItem.addActionListener(
        new ActionListener() {
          @Override
          public void actionPerformed(ActionEvent event) {
            new CreateDocumentDialog(thisFrame, model);
          }
        });

    itemMenuItem = new JMenuItem("Item");
    itemMenuItem.setEnabled(false);
    toolbarCreatePopup.add(itemMenuItem);
    itemMenuItem.addActionListener(
        new ActionListener() {
          @Override
          public void actionPerformed(ActionEvent event) {
            new CreateItemDialog(thisFrame, model);
          }
        });

    folderMenuItem = new JMenuItem("Folder");
    folderMenuItem.setEnabled(true);
    toolbarCreatePopup.add(folderMenuItem);
    folderMenuItem.addActionListener(
        new ActionListener() {
          @Override
          public void actionPerformed(ActionEvent event) {
            new CreateFolderDialog(thisFrame, model);
          }
        });

    relationshipMenuItem = new JMenuItem("Relationship");
    relationshipMenuItem.setEnabled(false);
    toolbarCreatePopup.add(relationshipMenuItem);
    relationshipMenuItem.addActionListener(
        new ActionListener() {
          @Override
          public void actionPerformed(ActionEvent event) {
            new CreateRelationshipDialog(thisFrame, model);
          }
        });

    policyMenuItem = new JMenuItem("Policy");
    policyMenuItem.setEnabled(false);
    toolbarCreatePopup.add(policyMenuItem);
    policyMenuItem.addActionListener(
        new ActionListener() {
          @Override
          public void actionPerformed(ActionEvent event) {
            new CreatePolicyDialog(thisFrame, model);
          }
        });

    toolbarButton[BUTTON_CREATE] =
        new JButton(
            "Create Object",
            new CreateObjectIcon(ClientHelper.TOOLBAR_ICON_SIZE, ClientHelper.TOOLBAR_ICON_SIZE));
    toolbarButton[BUTTON_CREATE].setDisabledIcon(
        new CreateObjectIcon(
            ClientHelper.TOOLBAR_ICON_SIZE, ClientHelper.TOOLBAR_ICON_SIZE, false));
    toolbarButton[BUTTON_CREATE].setEnabled(false);
    toolbarButton[BUTTON_CREATE].addActionListener(
        new ActionListener() {
          public void actionPerformed(ActionEvent e) {
            toolbarCreatePopup.show(
                toolbarButton[BUTTON_CREATE], 0, toolbarButton[BUTTON_CREATE].getHeight());
          }
        });

    toolBar.add(toolbarButton[BUTTON_CREATE]);

    toolBar.addSeparator();

    toolbarButton[BUTTON_LOG] =
        new JButton(
            "Log", new LogIcon(ClientHelper.TOOLBAR_ICON_SIZE, ClientHelper.TOOLBAR_ICON_SIZE));
    toolbarButton[BUTTON_LOG].setDisabledIcon(
        new LogIcon(ClientHelper.TOOLBAR_ICON_SIZE, ClientHelper.TOOLBAR_ICON_SIZE, false));
    toolbarButton[BUTTON_LOG].addActionListener(
        new ActionListener() {
          public void actionPerformed(ActionEvent e) {
            logFrame.showFrame();
          }
        });

    toolBar.add(toolbarButton[BUTTON_LOG]);

    toolbarButton[BUTTON_INFO] =
        new JButton(
            "Info", new InfoIcon(ClientHelper.TOOLBAR_ICON_SIZE, ClientHelper.TOOLBAR_ICON_SIZE));
    toolbarButton[BUTTON_INFO].setDisabledIcon(
        new InfoIcon(ClientHelper.TOOLBAR_ICON_SIZE, ClientHelper.TOOLBAR_ICON_SIZE, false));
    toolbarButton[BUTTON_INFO].addActionListener(
        new ActionListener() {
          public void actionPerformed(ActionEvent e) {
            infoDialog.showDialog();
          }
        });

    toolBar.add(toolbarButton[BUTTON_INFO]);

    pane.add(toolBar, BorderLayout.PAGE_START);

    folderPanel = new FolderPanel(model);
    detailsTabs = new DetailsTabs(model);

    split = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, folderPanel, detailsTabs);

    pane.add(split, BorderLayout.CENTER);

    addWindowListener(this);

    Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
    setPreferredSize(
        new Dimension(
            prefs.getInt(PREFS_WIDTH, (int) (screenSize.getWidth() / 1.5)),
            prefs.getInt(PREFS_HEIGHT, (int) (screenSize.getHeight() / 1.5))));
    setMinimumSize(new Dimension(200, 60));

    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    pack();

    split.setDividerLocation(prefs.getInt(PREFS_DIV, getPreferredSize().width / 4));

    if (prefs.getInt(PREFS_X, Integer.MAX_VALUE) == Integer.MAX_VALUE) {
      setLocationRelativeTo(null);
    } else {
      setLocation(prefs.getInt(PREFS_X, 0), prefs.getInt(PREFS_Y, 0));
    }

    setVisible(true);
  }