package de.juwimm.cms.gui; import static de.juwimm.cms.common.Constants.rb; import java.awt.Color; import java.awt.Cursor; import java.awt.Dimension; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Insets; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.IOException; import java.util.Locale; import java.util.ResourceBundle; import javax.swing.Icon; import javax.swing.ImageIcon; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.SwingUtilities; import javax.swing.tree.TreePath; import org.apache.log4j.Logger; import org.jvnet.flamingo.common.CommandButtonDisplayState; import org.jvnet.flamingo.common.JCommandButton; import org.jvnet.flamingo.common.JCommandMenuButton; import org.jvnet.flamingo.common.icon.EmptyResizableIcon; import org.jvnet.flamingo.common.icon.ImageWrapperResizableIcon; import org.jvnet.flamingo.common.model.ActionToggleButtonModel; import org.jvnet.flamingo.common.popup.JCommandPopupMenu; import org.jvnet.flamingo.common.popup.JPopupPanel; import org.jvnet.flamingo.common.popup.PopupPanelCallback; import org.jvnet.flamingo.ribbon.JRibbonBand; import org.jvnet.flamingo.ribbon.RibbonElementPriority; import org.jvnet.flamingo.ribbon.RibbonTask; import com.Ostermiller.util.Browser; import de.juwimm.cms.common.Constants; import de.juwimm.cms.common.UserRights; import de.juwimm.cms.gui.event.FinishedActionListener; import de.juwimm.cms.gui.event.ViewComponentEvent; import de.juwimm.cms.gui.ribbon.CommandButton; import de.juwimm.cms.gui.ribbon.CommandMenuButton; import de.juwimm.cms.gui.ribbon.Ribbon; import de.juwimm.cms.gui.ribbon.RibbonBand; import de.juwimm.cms.gui.tree.PageNode; import de.juwimm.cms.gui.tree.TreeNode; import de.juwimm.cms.util.ActionHub; import de.juwimm.cms.util.Communication; import de.juwimm.cms.util.UIConstants; import de.juwimm.cms.util.UserConfig; import de.juwimm.cms.vo.ViewComponentValue; /** * @author <a href="florin.zalum@juwimm.com">Florin Zalum</a> * @version $Id$ */ public class PanRibbon extends Ribbon implements ActionListener, FinishedActionListener { private static final long serialVersionUID = -6958197452475472452L; private static Logger log = Logger.getLogger(PanRibbon.class); public static final String CMS_LANG_DE = "cmslanguagegerman"; public static final String CMS_LANG_EN = "cmslanguageenglish"; JCommandButton newContentButton; private JCommandButton moveButton = null; private final Communication comm; private JCommandButton deleteNodeButton; private JCommandButton releaseSiteButton; private JCommandButton reviseSiteButton; private JCommandButton offlineButton; private JCommandButton deployButton; private JCommandButton checkInButton; private JCommandButton checkOutButton; private JCommandButton editViewButton; private JCommandButton taskViewButton; private JCommandButton adminViewButton; private JCommandButton languageButton; private JCommandButton helpButton; private JCommandButton exitButton; private JCommandButton logoutButton; private JCommandButton optionsButton; private JCommandButton infoButton; private JRibbonBand editBand; private JRibbonBand publishBand; private JRibbonBand viewSelectBand; private JRibbonBand optionsBand; private JRibbonBand exitBand; JCommandMenuButton newAfter; JCommandMenuButton newBefore; JCommandMenuButton newAppend; JCommandMenuButton symLinkAfter; JCommandMenuButton symLinkBefore; JCommandMenuButton symLinkAppend; JCommandMenuButton internAfter; JCommandMenuButton internBefore; JCommandMenuButton internAppend; JCommandMenuButton externAfter; JCommandMenuButton externBefore; JCommandMenuButton externAppend; JCommandMenuButton separatorAfter; JCommandMenuButton separatorBefore; JCommandMenuButton separatorAppend; JCommandMenuButton upItem; JCommandMenuButton downItem; JCommandMenuButton leftItem; JCommandMenuButton rightItem; public PanRibbon(Communication comm) { this.comm = comm; constructButtons(); arrangeButtons(); addListeners(comm); } /** * */ private void addListeners(ActionListener actionListener) { //add listeners logoutButton.addActionListener(actionListener); exitButton.addActionListener(actionListener); editViewButton.addActionListener(actionListener); taskViewButton.addActionListener(actionListener); adminViewButton.addActionListener(actionListener); deployButton.addActionListener(actionListener); releaseSiteButton.addActionListener(actionListener); reviseSiteButton.addActionListener(actionListener); //we don't want to show progressbar on showing options dialog optionsButton.addActionListener(this); infoButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { showVersion(e); } }); checkInButton.addActionListener(actionListener); checkInButton.getActionModel().setActionCommand(Constants.ACTION_CHECKIN); if (comm.isUserInRole(UserRights.SITE_ROOT) || comm.isUserInRole(UserRights.DEPLOY)) { offlineButton = createButton(rb.getString("ribbon.publish.offline"), UIConstants.RIBBON_OFFLINE); offlineButton.addActionListener(actionListener); offlineButton.getActionModel().setActionCommand(Constants.ACTION_MAKE_VIEW_OFFLINE); this.addButton(offlineButton, 4, publishBand); } checkOutButton.addActionListener(actionListener); checkOutButton.getActionModel().setActionCommand(Constants.ACTION_CHECKOUT); //add action commands logoutButton.getActionModel().setActionCommand(Constants.ACTION_LOGOFF); exitButton.getActionModel().setActionCommand(Constants.ACTION_EXIT); editViewButton.getActionModel().setActionCommand(Constants.ACTION_VIEW_EDITOR); taskViewButton.getActionModel().setActionCommand(Constants.ACTION_SHOW_TASK); deployButton.getActionModel().setActionCommand(Constants.ACTION_DEPLOY); releaseSiteButton.getActionModel().setActionCommand(Constants.ACTION_CONTENT_APPROVE); reviseSiteButton.getActionModel().setActionCommand(Constants.ACTION_CONTENT_CANCEL_APPROVAL); optionsButton.getActionModel().setActionCommand(Constants.ACTION_SHOW_OPTIONS); if (comm.isUserInRole(UserRights.SITE_ROOT)) { adminViewButton.getActionModel().setActionCommand(Constants.ACTION_VIEW_ROOT); } else { adminViewButton.getActionModel().setActionCommand(Constants.ACTION_VIEW_ADMIN); } helpButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { helpActionPerformed(e); } }); deleteNodeButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { ActionHub.fireViewComponentPerformed(new ViewComponentEvent(ViewComponentEvent.DELETE)); } }); } private void addButton(JCommandButton component, int index, JRibbonBand band) { GridBagConstraints compnentConstraints = new GridBagConstraints(); compnentConstraints.gridx = index; compnentConstraints.gridy = 0; band.addCommandButton(component, RibbonElementPriority.TOP); /**Tooltips RichTooltip tooltip = new RichTooltip(); tooltip.setTitle(band.getTitle()); tooltip.addDescriptionSection(description); component.setActionRichTooltip(tooltip); band.addCommandButton( component, RibbonElementPriority.TOP); */ } private void arrangeButtons() { editBand.startGroup(); this.addButton(newContentButton, 0, editBand); this.addButton(moveButton, 1, editBand); this.addButton(deleteNodeButton, 2, editBand); editBand.startGroup(); this.addButton(checkOutButton, 4, editBand); this.addButton(checkInButton, 5, editBand); this.addButton(reviseSiteButton, 1, publishBand); this.addButton(releaseSiteButton, 2, publishBand); this.addButton(deployButton, 3, publishBand); this.addButton(editViewButton, 0, viewSelectBand); this.addButton(taskViewButton, 1, viewSelectBand); this.addButton(adminViewButton, 2, viewSelectBand); this.addButton(languageButton, 0, optionsBand); this.addButton(optionsButton, 1, optionsBand); this.addButton(helpButton, 2, optionsBand); this.addButton(infoButton, 4, optionsBand); this.addButton(logoutButton, 3, exitBand); this.addButton(exitButton, 4, exitBand); initViewSelectionGroup(); //is not visible thanks to UI implementation RibbonTask task = new RibbonTask("Tizzit", editBand, publishBand, viewSelectBand, optionsBand, exitBand); this.addTask(task); } private void initViewSelectionGroup() { editViewButton.setActionModel(new ActionToggleButtonModel(false)); editViewButton.getActionModel().setSelected(true); editViewButton.getActionModel().addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { taskViewButton.getActionModel().setSelected(false); editViewButton.getActionModel().setSelected(true); adminViewButton.getActionModel().setSelected(false); } }); if (adminViewButton.isEnabled()) { adminViewButton.setActionModel(new ActionToggleButtonModel(false)); adminViewButton.getActionModel().addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { taskViewButton.getActionModel().setSelected(false); editViewButton.getActionModel().setSelected(false); adminViewButton.getActionModel().setSelected(true); } }); } taskViewButton.setActionModel(new ActionToggleButtonModel(false)); taskViewButton.getActionModel().addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { taskViewButton.getActionModel().setSelected(true); editViewButton.getActionModel().setSelected(false); adminViewButton.getActionModel().setSelected(false); } }); } private void initButtons() { newContentButton = createButton(rb.getString("ribbon.new"), UIConstants.RIBBON_NEW); deleteNodeButton = createButton(rb.getString("ribbon.delete"), UIConstants.RIBBON_TREE_NODE_DELETE); releaseSiteButton = createButton(rb.getString("ribbon.publish.release"), UIConstants.RIBBON_RELEASE_SITE); reviseSiteButton = createButton(rb.getString("ribbon.publish.revise"), UIConstants.RIBBON_REVISE_SITE); if (comm.isUserInRole(UserRights.SITE_ROOT) || comm.isUserInRole(UserRights.DEPLOY)) { deployButton = createButton(rb.getString("actions.ACTION_DEPLOY"), UIConstants.RIBBON_ACTION_DEPLOY); } else { deployButton = createButton(rb.getString("ribbon.publish.wizardAuthor"), UIConstants.RIBBON_ACTION_DEPLOY); } checkInButton = createButton(rb.getString("actions.ACTION_CHECKIN"), UIConstants.RIBBON_ACTION_CHECKIN); checkOutButton = createButton(rb.getString("actions.ACTION_CHECKOUT"), UIConstants.RIBBON_ACTION_CHECKOUT); languageButton = createButton(rb.getString("ribbon.language"), UIConstants.RIBBON_LANGUAGE); editViewButton = createButton(rb.getString("ribbon.view.editor"), UIConstants.RIBBON_EDIT_VIEW); taskViewButton = createButton(rb.getString("ribbon.view.task"), UIConstants.RIBBON_TASK_VIEW); adminViewButton = createButton(rb.getString("ribbon.view.admin"), UIConstants.RIBBON_ADMIN_VIEW); helpButton = createButton(rb.getString("ribbon.help"), UIConstants.RIBBON_HELP); infoButton = createButton(rb.getString("ribbon.about"), UIConstants.RIBBON_INFO); logoutButton = createButton(rb.getString("ribbon.logoff"), UIConstants.RIBBON_LOGOUT); exitButton = createButton(rb.getString("ribbon.quit"), UIConstants.RIBBON_EXIT); optionsButton = createButton(rb.getString("ribbon.options"), UIConstants.RIBBON_OPTIONS); moveButton = createButton(rb.getString("ribbon.move"), UIConstants.RIBBON_MOVE); } private JCommandButton createButton(String text, ImageIcon img) { return new CommandButton(text, ImageWrapperResizableIcon.getIcon(img.getImage(), new Dimension(img.getIconWidth(), img.getIconHeight()))); } private void constructButtons() { initButtons(); checkInButton.setEnabled(false); checkOutButton.setEnabled(false); adminViewButton.setEnabled(false); if ((comm.isUserInRole(UserRights.SITE_ROOT)) || (comm.isUserInRole(UserRights.UNIT_ADMIN))) { adminViewButton.setEnabled(true); } editBand = new RibbonBand(rb.getString("ribbonBand.edit"), new EmptyResizableIcon(0)); publishBand = new RibbonBand(rb.getString("ribbonBand.publish"), new EmptyResizableIcon(0)); viewSelectBand = new RibbonBand(rb.getString("ribbonBand.view"), new EmptyResizableIcon(0)); optionsBand = new RibbonBand(rb.getString("ribbonBand.options"), new EmptyResizableIcon(0)); exitBand = new RibbonBand(rb.getString("ribbonBand.exit"), new EmptyResizableIcon(0)); newAfter = ButtonPopupPanelCallback.getImageItem(rb.getString("actions.ACTION_TREE_NODE_AFTER"), UIConstants.RIBBON_ACTION_TREE_NODE_AFTER); newBefore = ButtonPopupPanelCallback.getImageItem(rb.getString("actions.ACTION_TREE_NODE_BEFORE"), UIConstants.RIBBON_ACTION_TREE_NODE_BEFORE); newAppend = ButtonPopupPanelCallback.getImageItem(rb.getString("actions.ACTION_TREE_NODE_APPEND"), UIConstants.RIBBON_ACTION_TREE_NODE_APPEND); symLinkAfter = ButtonPopupPanelCallback.getImageItem(rb.getString("actions.ACTION_TREE_SYMLINK_AFTER"), UIConstants.RIBBON_ACTION_TREE_NODE_AFTER); symLinkBefore = ButtonPopupPanelCallback.getImageItem(rb.getString("actions.ACTION_TREE_SYMLINK_BEFORE"), UIConstants.RIBBON_ACTION_TREE_NODE_BEFORE); symLinkAppend = ButtonPopupPanelCallback.getImageItem(rb.getString("actions.ACTION_TREE_SYMLINK_ADD"), UIConstants.RIBBON_ACTION_TREE_NODE_APPEND); internAfter = ButtonPopupPanelCallback.getImageItem(rb.getString("actions.ACTION_TREE_JUMP_AFTER"), UIConstants.RIBBON_ACTION_TREE_NODE_AFTER); internBefore = ButtonPopupPanelCallback.getImageItem(rb.getString("actions.ACTION_TREE_JUMP_BEFORE"), UIConstants.RIBBON_ACTION_TREE_NODE_BEFORE); internAppend = ButtonPopupPanelCallback.getImageItem(rb.getString("actions.ACTION_TREE_JUMP_ADD"), UIConstants.RIBBON_ACTION_TREE_NODE_APPEND); externAfter = ButtonPopupPanelCallback.getImageItem(rb.getString("actions.ACTION_TREE_LINK_AFTER"), UIConstants.RIBBON_ACTION_TREE_NODE_AFTER); externBefore = ButtonPopupPanelCallback.getImageItem(rb.getString("actions.ACTION_TREE_LINK_BEFORE"), UIConstants.RIBBON_ACTION_TREE_NODE_BEFORE); externAppend = ButtonPopupPanelCallback.getImageItem(rb.getString("actions.ACTION_TREE_LINK_ADD"), UIConstants.RIBBON_ACTION_TREE_NODE_APPEND); separatorAfter = ButtonPopupPanelCallback.getImageItem(rb.getString("actions.ACTION_TREE_SEPARATOR_AFTER"), UIConstants.RIBBON_ACTION_TREE_NODE_AFTER); separatorBefore = ButtonPopupPanelCallback.getImageItem(rb.getString("actions.ACTION_TREE_SEPARATOR_BEFORE"), UIConstants.RIBBON_ACTION_TREE_NODE_BEFORE); separatorAppend = ButtonPopupPanelCallback.getImageItem(rb.getString("actions.ACTION_TREE_SEPARATOR_ADD"), UIConstants.RIBBON_ACTION_TREE_NODE_APPEND); newContentButton.setPopupCallback(new ButtonPopupPanelCallback() { @Override public JPopupPanel getPopupPanel(JCommandButton commandButton) { if (loaded == false) { addNewHeader(rb.getString("ribbon.TOOLBAR_CONTENT"), UIConstants.RIBBON_CONTENT, 0); addSubItem(newAfter, 1); addSubItem(newBefore, 2); addSubItem(newAppend, 3); addNewHeader(rb.getString("ribbon.TOOLBAR_SYMLINK"), UIConstants.RIBBON_TOOLBAR_SYMLINK, 4); addSubItem(symLinkAfter, 5); addSubItem(symLinkBefore, 6); addSubItem(symLinkAppend, 7); addNewHeader(rb.getString("ribbon.TOOLBAR_JUMP"), UIConstants.RIBBON_TOOLBAR_JUMP, 8); addSubItem(internAfter, 9); addSubItem(internBefore, 10); addSubItem(internAppend, 11); addNewHeader(rb.getString("ribbon.TOOLBAR_LINK"), UIConstants.RIBBON_TOOLBAR_LINK, 12); addSubItem(externAfter, 13); addSubItem(externBefore, 14); addSubItem(externAppend, 15); addNewHeader(rb.getString("ribbon.TOOLBAR_SEPARATOR"), UIConstants.RIBBON_TOOLBAR_SEPARATOR, 16); addSubItem(separatorAfter, 17); addSubItem(separatorBefore, 18); addSubItem(separatorAppend, 19); this.addListeners(); } return super.getPopupPanel(commandButton); } private void addListeners() { addListener(newAppend, comm, Constants.ACTION_TREE_NODE_APPEND); addListener(newBefore, comm, Constants.ACTION_TREE_NODE_BEFORE); addListener(newAfter, comm, Constants.ACTION_TREE_NODE_AFTER); addListener(symLinkAppend, comm, Constants.ACTION_TREE_SYMLINK_ADD); addListener(symLinkBefore, comm, Constants.ACTION_TREE_SYMLINK_BEFORE); addListener(symLinkAfter, comm, Constants.ACTION_TREE_SYMLINK_AFTER); addListener(internAfter, comm, Constants.ACTION_TREE_JUMP_AFTER); addListener(internBefore, comm, Constants.ACTION_TREE_JUMP_BEFORE); addListener(internAppend, comm, Constants.ACTION_TREE_JUMP_ADD); addListener(externAfter, comm, Constants.ACTION_TREE_LINK_AFTER); addListener(externBefore, comm, Constants.ACTION_TREE_LINK_BEFORE); addListener(externAppend, comm, Constants.ACTION_TREE_LINK_ADD); addListener(separatorAfter, comm, Constants.ACTION_TREE_SEPARATOR_AFTER); addListener(separatorBefore, comm, Constants.ACTION_TREE_SEPARATOR_BEFORE); addListener(separatorAppend, comm, Constants.ACTION_TREE_SEPARATOR_ADD); } }); languageButton.setPopupCallback(new ButtonPopupPanelCallback() { JCommandMenuButton deItem; JCommandMenuButton enItem; @Override public JPopupPanel getPopupPanel(JCommandButton commandButton) { if (loaded == false) { deItem = getSimpleItem(rb.getString("menubar.extras.options.chooseLanguage.german")); enItem = getSimpleItem(rb.getString("menubar.extras.options.chooseLanguage.english")); ImageIcon iconEn = UIConstants.RIBBON_LANGUAGE_EN; ImageIcon iconDe = UIConstants.RIBBON_LANGUAGE_DE; deItem.setIcon(ImageWrapperResizableIcon.getIcon(iconDe.getImage(), new Dimension(16, 11))); enItem.setIcon(ImageWrapperResizableIcon.getIcon(iconEn.getImage(), new Dimension(16, 11))); addItem(deItem, 0); addItem(enItem, 1); addListeners(); } return super.getPopupPanel(commandButton); } private void addListeners() { addListener(deItem, comm, CMS_LANG_DE); addListener(enItem, comm, CMS_LANG_EN); } }); upItem = ButtonPopupPanelCallback.getImageItem(rb.getString("actions.MOVE_UP"), UIConstants.RIBBON_UP); downItem = ButtonPopupPanelCallback.getImageItem(rb.getString("actions.MOVE_DOWN"), UIConstants.RIBBON_DOWN); leftItem = ButtonPopupPanelCallback.getImageItem(rb.getString("actions.MOVE_LEFT"), UIConstants.RIBBON_LEFT); rightItem = ButtonPopupPanelCallback.getImageItem(rb.getString("actions.MOVE_RIGHT"), UIConstants.RIBBON_RIGHT); moveButton.setPopupCallback(new ButtonPopupPanelCallback() { @Override public JPopupPanel getPopupPanel(JCommandButton commandButton) { if (loaded == false) { addItem(upItem, 0); addItem(downItem, 1); addItem(leftItem, 2); addItem(rightItem, 3); this.addListeners(); } return super.getPopupPanel(commandButton); } private void addListeners() { leftItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { setMoveButtonsEnabled(false); ActionHub.fireViewComponentPerformed(new ViewComponentEvent(ViewComponentEvent.MOVE_LEFT)); } }); rightItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { setMoveButtonsEnabled(false); ActionHub.fireViewComponentPerformed(new ViewComponentEvent(ViewComponentEvent.MOVE_RIGHT)); } }); upItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { setMoveButtonsEnabled(false); ActionHub.fireViewComponentPerformed(new ViewComponentEvent(ViewComponentEvent.MOVE_UP)); } }); downItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { setMoveButtonsEnabled(false); ActionHub.fireViewComponentPerformed(new ViewComponentEvent(ViewComponentEvent.MOVE_DOWN)); } }); } }); moveButton.setCommandButtonKind(JCommandButton.CommandButtonKind.ACTION_AND_POPUP_MAIN_ACTION); newContentButton.setCommandButtonKind(JCommandButton.CommandButtonKind.ACTION_AND_POPUP_MAIN_ACTION); languageButton.setCommandButtonKind(JCommandButton.CommandButtonKind.ACTION_AND_POPUP_MAIN_ACTION); } static class ButtonPopupPanelCallback implements PopupPanelCallback { JCommandPopupMenu contentPopup = null; Boolean loaded = false; public ButtonPopupPanelCallback() { contentPopup = new JCommandPopupMenu(); contentPopup.setLayout(new GridBagLayout()); } public JPopupPanel getPopupPanel(JCommandButton commandButton) { loaded = true; return contentPopup; } protected void addNewHeader(String text, Icon icon, int index) { GridBagConstraints headerConstraints = new GridBagConstraints(0, index, 1, 1, 0, 0, GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(5, 5, 5, 5), 0, 0); JLabel header = new JLabel(); header.setText(text); header.setIcon(icon); header.setIconTextGap(8); header.setForeground(new Color(0x757575)); contentPopup.add(header, headerConstraints); } public static JCommandMenuButton getImageItem(String text, ImageIcon icon) { JCommandMenuButton item = new CommandMenuButton(text, ImageWrapperResizableIcon.getIcon(icon.getImage(), new Dimension(16, 16))); item.setDisplayState(CommandButtonDisplayState.MEDIUM); item.setHorizontalAlignment(SwingUtilities.LEFT); return item; } protected JCommandMenuButton getSimpleItem(String text) { JCommandMenuButton item = new CommandMenuButton(text, new EmptyResizableIcon(new Dimension(0, 0))); item.setDisplayState(CommandButtonDisplayState.MEDIUM); item.setHorizontalAlignment(SwingUtilities.LEFT); return item; } protected void addSubItem(JCommandMenuButton item, int index) { GridBagConstraints itemConstraints = new GridBagConstraints(0, index, 1, 1, 0, 0, GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(0, 25, 0, 5), 0, 0); contentPopup.add(item, itemConstraints); } protected void addItem(JCommandMenuButton item, int index) { GridBagConstraints itemConstraints = new GridBagConstraints(0, index, 1, 1, 0, 0, GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(0, 0, 0, 0), 0, 0); contentPopup.add(item, itemConstraints); } protected void addListener(JCommandMenuButton item, ActionListener listener, String command) { item.addActionListener(listener); item.getActionModel().setActionCommand(command); } } void helpActionPerformed(ActionEvent e) { try { this.getParent().setCursor(new Cursor(Cursor.WAIT_CURSOR)); Browser.displayURL(Constants.CMS_PATH_HELP); } catch (IOException exe) { log.error("HELPError", exe); } finally { this.getParent().setCursor(Cursor.getDefaultCursor()); } } public void actionPerformed(ActionEvent e) { if (e.getActionCommand().equals(Constants.ACTION_TREE_DESELECT)) { deleteNodeButton.setEnabled(false); newBefore.setEnabled(false); newAfter.setEnabled(false); newAppend.setEnabled(false); internBefore.setEnabled(false); internAfter.setEnabled(false); internAppend.setEnabled(false); separatorBefore.setEnabled(false); separatorAfter.setEnabled(false); separatorAppend.setEnabled(false); externBefore.setEnabled(false); externAfter.setEnabled(false); externAppend.setEnabled(false); symLinkBefore.setEnabled(false); symLinkAfter.setEnabled(false); symLinkAppend.setEnabled(false); checkInButton.setEnabled(false); checkOutButton.setEnabled(false); if (offlineButton != null) { offlineButton.setEnabled(false); } } else if (e.getActionCommand().equals(Constants.ACTION_TREE_SELECT) || e.getActionCommand().equals(Constants.ACTION_DEPLOY_STATUS_CHANGED)) { TreeNode entry = (TreeNode) e.getSource(); updateRibbonButtonsOnSelect(entry); } else if (e.getActionCommand().equals(Constants.ENABLE_CHECKIN)) { checkInButton.setEnabled(true); checkOutButton.setEnabled(false); //TODO find these buttons //mnuPublishLetRelease.setEnabled(false); releaseSiteButton.setEnabled(false); reviseSiteButton.setEnabled(false); } else if (e.getActionCommand().equals(Constants.ENABLE_CHECKOUT)) { checkInButton.setEnabled(false); checkOutButton.setEnabled(true); updateRibbonButtonsOnSelect(PanTree.getSelectedEntry()); } else if (e.getActionCommand().equals(Constants.ACTION_CONTENT_SELECT) || e.getActionCommand().equals(Constants.ACTION_CONTENT_EDITED)) { checkInButton.setEnabled(false); checkOutButton.setEnabled(false); } else if (e.getActionCommand().equals(Constants.ACTION_CONTENT_DESELECT)) { checkInButton.setEnabled(false); checkOutButton.setEnabled(false); } else if (e.getActionCommand().equals(Constants.ACTION_SHOW_TASK)) { setEnableEditPublishButtons(false); //either is in edit view or task or admin it the buttons init with disabled checkInButton.setEnabled(false); checkOutButton.setEnabled(false); } else if (e.getActionCommand().equals(CMS_LANG_DE)) { try { Constants.CMS_LOCALE = Locale.GERMAN; Constants.CMS_LANGUAGE = Constants.CMS_LOCALE.getLanguage(); rb = ResourceBundle.getBundle("CMS", Constants.CMS_LOCALE); UserConfig.getInstance().setConfigNodeValue(UserConfig.USERCONF_PREFERRED_LANGUAGE, Constants.CMS_LOCALE.toString()); UserConfig.getInstance().saveChanges(); JOptionPane.showMessageDialog(UIConstants.getMainFrame(), rb.getString("exception.firstRestartApp"), rb.getString("dialog.title"), JOptionPane.INFORMATION_MESSAGE); } catch (Exception exe) { if (log.isDebugEnabled()) { log.debug(exe.getMessage()); } } } else if (e.getActionCommand().equals(CMS_LANG_EN)) { try { Constants.CMS_LOCALE = Locale.ENGLISH; Constants.CMS_LANGUAGE = Constants.CMS_LOCALE.getLanguage(); rb = ResourceBundle.getBundle("CMS", Constants.CMS_LOCALE); UserConfig.getInstance().setConfigNodeValue(UserConfig.USERCONF_PREFERRED_LANGUAGE, Constants.CMS_LOCALE.toString()); UserConfig.getInstance().saveChanges(); JOptionPane.showMessageDialog(UIConstants.getMainFrame(), rb.getString("exception.firstRestartApp"), rb.getString("dialog.title"), JOptionPane.INFORMATION_MESSAGE); } catch (Exception exe) { if (log.isDebugEnabled()) { log.debug(exe.getMessage()); } } } else if (e.getActionCommand().equals(Constants.ACTION_SHOW_OPTIONS)) { OptionsDialog optionsDialog = new OptionsDialog(comm); optionsDialog.setVisible(true); } else if (e.getActionCommand().equals(Constants.ACTION_CREATE_UNIT)) { adminViewButton.doActionClick(); } else if (e.getActionCommand().equals(Constants.ACTION_MAKE_VIEW_OFFLINE)) { offlineButton.setEnabled(false); } else if (e.getActionCommand().equals(Constants.ACTION_VIEW_EDITOR_WITH_SELECTION)) { taskViewButton.getActionModel().setSelected(false); editViewButton.getActionModel().setSelected(true); adminViewButton.getActionModel().setSelected(false); } } private void setMoveButtonsEnabled(boolean enabled) { moveButton.setEnabled(enabled); upItem.setEnabled(enabled); rightItem.setEnabled(enabled); upItem.setEnabled(enabled); downItem.setEnabled(enabled); } public void setView(boolean showContent) { if (showContent) { showEditor(); } else { setEnableEditPublishButtons(false); //either is in edit view or task or admin it the buttons init with disabled checkInButton.setEnabled(false); checkOutButton.setEnabled(false); } this.validate(); this.repaint(); } private void showEditor() { setEnableEditPublishButtons(true); newBefore.setEnabled(false); newAfter.setEnabled(false); newAppend.setEnabled(false); internBefore.setEnabled(false); internAfter.setEnabled(false); internAppend.setEnabled(false); externBefore.setEnabled(false); externAfter.setEnabled(false); externAppend.setEnabled(false); symLinkBefore.setEnabled(false); symLinkAfter.setEnabled(false); symLinkAppend.setEnabled(false); separatorBefore.setEnabled(false); separatorAfter.setEnabled(false); separatorAppend.setEnabled(false); leftItem.setEnabled(false); upItem.setEnabled(false); downItem.setEnabled(false); rightItem.setEnabled(false); deleteNodeButton.setEnabled(false); deployButton.setEnabled(true); } private void updateRibbonButtonsOnSelect(TreeNode currentEntry) { if (currentEntry == null) return; setEnableEditPublishButtons(true); TreePath[] multipleTreeSelections = PanTree.getSelectedTreePath();//for multiple nodes selection if (multipleTreeSelections.length == 1) { leftItem.setEnabled(currentEntry.isMoveableToLeft()); upItem.setEnabled(currentEntry.isMoveableToUp()); downItem.setEnabled(currentEntry.isMoveableToDown()); rightItem.setEnabled(currentEntry.isMoveableToRight()); } else if (multipleTreeSelections.length > 1) { boolean groupMoveableToLeft = true; boolean groupMoveableToRight = true; boolean groupMoveableToUp = true; boolean groupMoveableToDown = true; for (TreePath treePath : multipleTreeSelections) { PageNode localPage = (PageNode) treePath.getLastPathComponent(); if (!localPage.isMoveableToDown()) groupMoveableToDown = false; if (!localPage.isMoveableToUp()) groupMoveableToUp = false; if (!localPage.isMoveableToLeft()) groupMoveableToLeft = false; if (!localPage.isMoveableToRight()) groupMoveableToRight = false; } leftItem.setEnabled(groupMoveableToLeft); upItem.setEnabled(groupMoveableToUp); downItem.setEnabled(groupMoveableToDown); rightItem.setEnabled(groupMoveableToRight); } deleteNodeButton.setEnabled(currentEntry.isDeleteable()); boolean append = currentEntry.isAppendingAllowed(); newAppend.setEnabled(append); internAppend.setEnabled(append); separatorAppend.setEnabled(append); externAppend.setEnabled(append); symLinkAppend.setEnabled(append); boolean afterBefore = !currentEntry.isRoot() && currentEntry instanceof PageNode; newBefore.setEnabled(afterBefore); newAfter.setEnabled(afterBefore); internBefore.setEnabled(afterBefore); internAfter.setEnabled(afterBefore); separatorBefore.setEnabled(afterBefore); separatorAfter.setEnabled(afterBefore); externBefore.setEnabled(afterBefore); externAfter.setEnabled(afterBefore); symLinkBefore.setEnabled(afterBefore); symLinkAfter.setEnabled(afterBefore); //TODO find these buttons //mnuPublishLetRelease.setEnabled(false); releaseSiteButton.setEnabled(false); reviseSiteButton.setEnabled(false); if (currentEntry instanceof PageNode) { if (offlineButton != null) { ViewComponentValue viewComponentValue = ((PageNode) currentEntry).getViewComponent(); offlineButton.setEnabled(viewComponentValue.getOnline() == 0 ? false : true); } switch (((PageNode) currentEntry).getStatus()) { case Constants.DEPLOY_STATUS_EDITED: if (!comm.isUserInRole(UserRights.APPROVE)) { releaseSiteButton.setEnabled(false); } else { releaseSiteButton.setEnabled(true); } // mnuPublishLetRelease.setEnabled(true); reviseSiteButton.setEnabled(false); break; case Constants.DEPLOY_STATUS_FOR_APPROVAL: // mnuPublishLetRelease.setEnabled(false); reviseSiteButton.setEnabled(true); if (!comm.isUserInRole(UserRights.APPROVE)) { releaseSiteButton.setEnabled(false); } else { releaseSiteButton.setEnabled(true); } break; case Constants.DEPLOY_STATUS_APPROVED: reviseSiteButton.setEnabled(true); break; default: // mnuPublishLetRelease.setEnabled(false); releaseSiteButton.setEnabled(false); reviseSiteButton.setEnabled(false); break; } } } private void setEnableEditPublishButtons(boolean state) { newContentButton.setEnabled(state); moveButton.setEnabled(state); deleteNodeButton.setEnabled(state); releaseSiteButton.setEnabled(state); reviseSiteButton.setEnabled(state); deployButton.setEnabled(state); releaseSiteButton.setEnabled(state); if (offlineButton != null) { offlineButton.setEnabled(state); } //TODO //mnuPublishLetRelease.setEnabled(false); } void showVersion(ActionEvent e) { FrmVersion dialog = new FrmVersion(Constants.CMS_VERSION); int height = 300; int width = 450; int midHeight = UIConstants.getMainFrame().getY() + (UIConstants.getMainFrame().getHeight() / 2); int midWidth = UIConstants.getMainFrame().getX() + (UIConstants.getMainFrame().getWidth() / 2); dialog.setSize(width, height); dialog.setLocation(midWidth - width / 2, midHeight - height / 2); dialog.setVisible(true); } public void actionFinished() { editViewButton.setEnabled(true); } }