Package org.freeplane.core.ui.ribbon.special

Source Code of org.freeplane.core.ui.ribbon.special.EdgeStyleContributorFactory

package org.freeplane.core.ui.ribbon.special;

import java.util.ArrayList;
import java.util.List;
import java.util.Properties;

import javax.swing.ButtonGroup;

import org.freeplane.core.ui.AFreeplaneAction;
import org.freeplane.core.ui.ribbon.ARibbonContributor;
import org.freeplane.core.ui.ribbon.CurrentState;
import org.freeplane.core.ui.ribbon.IChangeObserver;
import org.freeplane.core.ui.ribbon.IRibbonContributorFactory;
import org.freeplane.core.ui.ribbon.RibbonActionContributorFactory;
import org.freeplane.core.ui.ribbon.RibbonBuildContext;
import org.freeplane.core.util.TextUtils;
import org.pushingpixels.flamingo.api.common.JCommandButton;
import org.pushingpixels.flamingo.api.common.JCommandButton.CommandButtonKind;
import org.pushingpixels.flamingo.api.common.JCommandToggleButton;
import org.pushingpixels.flamingo.api.common.JCommandToggleMenuButton;
import org.pushingpixels.flamingo.api.common.popup.JCommandPopupMenu;
import org.pushingpixels.flamingo.api.common.popup.JPopupPanel;
import org.pushingpixels.flamingo.api.common.popup.PopupPanelCallback;
import org.pushingpixels.flamingo.api.ribbon.JRibbonBand;
import org.pushingpixels.flamingo.api.ribbon.RibbonElementPriority;
import org.pushingpixels.flamingo.api.ribbon.resize.CoreRibbonResizePolicies;
import org.pushingpixels.flamingo.api.ribbon.resize.RibbonBandResizePolicy;

public class EdgeStyleContributorFactory implements IRibbonContributorFactory {
  public ARibbonContributor getContributor(final Properties attributes) {   
    return new ARibbonContributor() {     

      public String getKey() {
        return attributes.getProperty("name");
      }

      public void contribute(RibbonBuildContext context, ARibbonContributor parent) {
        if (parent == null) {
          return;
        }

        JRibbonBand band = new JRibbonBand(TextUtils.removeTranslateComment(TextUtils.getText("ribbon.band.edgeStyles")), null, null);
        band.setExpandButtonKeyTip("ES");
        band.setCollapsedStateKeyTip("ZE");

        JCommandButton styleGroupButton = new JCommandButton(TextUtils.removeTranslateComment(TextUtils.getText("edgeStyleGroupAction.text")));       
        styleGroupButton.setCommandButtonKind(CommandButtonKind.POPUP_ONLY);
        AFreeplaneAction action = context.getBuilder().getMode().getAction("EdgeStyleAsParentAction");
        final JCommandToggleMenuButton styleAsParent = RibbonActionContributorFactory.createCommandToggleMenuButton(action);
        addDefaultToggleHandler(context, action, styleAsParent);
        action = context.getBuilder().getMode().getAction("EdgeStyleAction.linear");
        final JCommandToggleMenuButton styleLinear = RibbonActionContributorFactory.createCommandToggleMenuButton(action);
        addDefaultToggleHandler(context, action, styleLinear);
        action = context.getBuilder().getMode().getAction("EdgeStyleAction.bezier");
        final JCommandToggleMenuButton styleBezier = RibbonActionContributorFactory.createCommandToggleMenuButton(action);
        addDefaultToggleHandler(context, action, styleBezier);
        action = context.getBuilder().getMode().getAction("EdgeStyleAction.sharp_linear");
        final JCommandToggleMenuButton styleSharpLinear = RibbonActionContributorFactory.createCommandToggleMenuButton(action);
        addDefaultToggleHandler(context, action, styleSharpLinear);
        action = context.getBuilder().getMode().getAction("EdgeStyleAction.sharp_bezier");
        final JCommandToggleMenuButton styleSharpBezier = RibbonActionContributorFactory.createCommandToggleMenuButton(action);
        addDefaultToggleHandler(context, action, styleSharpBezier);
        action = context.getBuilder().getMode().getAction("EdgeStyleAction.horizontal");
        final JCommandToggleMenuButton styleHorizontal = RibbonActionContributorFactory.createCommandToggleMenuButton(action);
        addDefaultToggleHandler(context, action, styleHorizontal);
        action = context.getBuilder().getMode().getAction("EdgeStyleAction.hide_edge");
        final JCommandToggleMenuButton styleHideEdge = RibbonActionContributorFactory.createCommandToggleMenuButton(action);
        addDefaultToggleHandler(context, action, styleHideEdge);

        ButtonGroup group = new ButtonGroup();
        styleAsParent.getActionModel().setGroup(group);
        styleLinear.getActionModel().setGroup(group);
        styleAsParent.getActionModel().setGroup(group);
        styleBezier.getActionModel().setGroup(group);
        styleAsParent.getActionModel().setGroup(group);
        styleSharpLinear.getActionModel().setGroup(group);
        styleAsParent.getActionModel().setGroup(group);
        styleSharpBezier.getActionModel().setGroup(group);
        styleAsParent.getActionModel().setGroup(group);
        styleHorizontal.getActionModel().setGroup(group);
        styleAsParent.getActionModel().setGroup(group);
        styleHideEdge.getActionModel().setGroup(group);
        styleAsParent.getActionModel().setGroup(group);

        styleGroupButton.setPopupCallback(new PopupPanelCallback() {
          public JPopupPanel getPopupPanel(JCommandButton commandButton) {
            JCommandPopupMenu popupmenu = new JCommandPopupMenu();
            popupmenu.addMenuButton(styleAsParent);
            popupmenu.addMenuButton(styleLinear);
            popupmenu.addMenuButton(styleBezier);
            popupmenu.addMenuButton(styleSharpLinear);
            popupmenu.addMenuButton(styleSharpBezier);
            popupmenu.addMenuButton(styleHorizontal);
            popupmenu.addMenuButton(styleHideEdge);
            return popupmenu;
          }
        });

        band.addCommandButton(styleGroupButton, RibbonElementPriority.MEDIUM);

        JCommandButton lineWidthGroupButton = new JCommandButton(TextUtils.removeTranslateComment(TextUtils.getText("edgeLineWidthGroupAction.text")));
        lineWidthGroupButton.setCommandButtonKind(CommandButtonKind.POPUP_ONLY);       
        action = context.getBuilder().getMode().getAction("EdgeWidthAction_width_parent");
        final JCommandToggleMenuButton widthParent = RibbonActionContributorFactory.createCommandToggleMenuButton(action);
        addDefaultToggleHandler(context, action, widthParent);
        action = context.getBuilder().getMode().getAction("EdgeWidthAction_width_thin");
        final JCommandToggleMenuButton widthThin = RibbonActionContributorFactory.createCommandToggleMenuButton(action);
        addDefaultToggleHandler(context, action, widthThin);
        action = context.getBuilder().getMode().getAction("EdgeWidthAction_1");
        final JCommandToggleMenuButton width1 = RibbonActionContributorFactory.createCommandToggleMenuButton(action);
        addDefaultToggleHandler(context, action, width1);
        action = context.getBuilder().getMode().getAction("EdgeWidthAction_2");
        final JCommandToggleMenuButton width2 = RibbonActionContributorFactory.createCommandToggleMenuButton(action);
        addDefaultToggleHandler(context, action, width2);
        action = context.getBuilder().getMode().getAction("EdgeWidthAction_4");
        final JCommandToggleMenuButton width4 = RibbonActionContributorFactory.createCommandToggleMenuButton(action);
        addDefaultToggleHandler(context, action, width4);
        action = context.getBuilder().getMode().getAction("EdgeWidthAction_8");
        final JCommandToggleMenuButton width8 = RibbonActionContributorFactory.createCommandToggleMenuButton(action);
        addDefaultToggleHandler(context, action, width8);

        lineWidthGroupButton.setPopupCallback(new PopupPanelCallback() {
          public JPopupPanel getPopupPanel(JCommandButton commandButton) {
            JCommandPopupMenu popupmenu = new JCommandPopupMenu();
            popupmenu.addMenuButton(widthParent);
            popupmenu.addMenuButton(widthThin);
            popupmenu.addMenuButton(width1);
            popupmenu.addMenuButton(width2);
            popupmenu.addMenuButton(width4);
            popupmenu.addMenuButton(width8);
            return popupmenu;
          }
        });

        band.addCommandButton(lineWidthGroupButton, RibbonElementPriority.MEDIUM);

        action = context.getBuilder().getMode().getAction("EdgeColorAction");
        final JCommandButton edgeColorButton = RibbonActionContributorFactory.createCommandButton(action);
        band.addCommandButton(edgeColorButton, RibbonElementPriority.MEDIUM);

        action = context.getBuilder().getMode().getAction("AutomaticEdgeColorHookAction");
        //RIBBONS
//        KeyStroke ks =RibbonAcceleratorManager.parseKeyStroke("j2ef2");
//        context.getBuilder().getAcceleratorManager().setAccelerator(action, ks);
//        RibbonActionContributorFactory.updateRichTooltip(button, action, ks);
        final JCommandButton automaticColorButton = RibbonActionContributorFactory.createCommandButton(action);
        band.addCommandButton(automaticColorButton, RibbonElementPriority.MEDIUM);

        List<RibbonBandResizePolicy> policies = new ArrayList<RibbonBandResizePolicy>();
        policies.add(new CoreRibbonResizePolicies.Mirror(band.getControlPanel()));
        policies.add(new CoreRibbonResizePolicies.High2Mid(band.getControlPanel()));
        band.setResizePolicies(policies);
        parent.addChild(band, new ChildProperties(parseOrderSettings(attributes.getProperty("orderPriority", ""))));

      }

      public void addChild(Object child, ChildProperties properties) {
      }
    };
  }

  private void addDefaultToggleHandler(final RibbonBuildContext context, final AFreeplaneAction action, final JCommandToggleButton button) {
    context.getBuilder().getMapChangeAdapter().addListener(new IChangeObserver() {
      public void updateState(CurrentState state) {
        if (AFreeplaneAction.checkSelectionOnChange(action)) {
          action.setSelected();
          button.getActionModel().setSelected(action.isSelected());
        }
      }
    });
  }
  /***********************************************************************************
   * CONSTRUCTORS
   **********************************************************************************/

  /***********************************************************************************
   * METHODS
   **********************************************************************************/

  /***********************************************************************************
   * REQUIRED METHODS FOR INTERFACES
   **********************************************************************************/
TOP

Related Classes of org.freeplane.core.ui.ribbon.special.EdgeStyleContributorFactory

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.