Browse Source

Merge pull request #1074 in BA/design from ~MOMEAK/design9.0:9.0release to release/9.0

* commit 'd6213e3b697e1280f3ddc32f4c58174f971b2ce1':
  代码质量
  新加一个类
  REPORT-2897 9.0设计器修改 更新超级那边样式
  REPORT-2897 右侧属性面板上的弹窗修改(参数面板和超级链接),加入rePaint参数区分菜单栏弹窗和属性面板的弹窗
master
superman 7 years ago
parent
commit
f8873df34b
  1. 2
      designer/src/com/fr/design/actions/insert/flot/ChartFloatAction.java
  2. 2
      designer/src/com/fr/design/actions/insert/flot/FormulaFloatAction.java
  3. 2
      designer/src/com/fr/design/actions/insert/flot/ImageFloatAction.java
  4. 2
      designer/src/com/fr/design/actions/insert/flot/TextBoxFloatAction.java
  5. 2
      designer/src/com/fr/design/mainframe/ReportFloatPane.java
  6. 17
      designer_base/src/com/fr/design/actions/UpdateAction.java
  7. 1
      designer_base/src/com/fr/design/gui/controlpane/UIListControlPane.java
  8. 103
      designer_base/src/com/fr/design/gui/imenu/UIMenuEastAttrItem.java
  9. 2
      designer_base/src/com/fr/design/gui/imenu/UIMenuItem.java
  10. 28
      designer_base/src/com/fr/design/gui/imenu/UIPopupEastAttrMenu.java
  11. 4
      designer_base/src/com/fr/design/gui/imenu/UIPopupMenu.java
  12. 734
      designer_base/src/com/fr/design/menu/MenuDef.java

2
designer/src/com/fr/design/actions/insert/flot/ChartFloatAction.java

@ -36,7 +36,7 @@ public class ChartFloatAction extends ElementCaseAction {
public ChartFloatAction(ElementCasePane t) { public ChartFloatAction(ElementCasePane t) {
super(t); super(t);
this.setMenuKeySet(FLOAT_INSERT_CHART); this.setMenuKeySet(FLOAT_INSERT_CHART);
this.setName(getMenuKeySet().getMenuKeySetName() + "..."); this.setName(getMenuKeySet().getMenuKeySetName());
this.setMnemonic(getMenuKeySet().getMnemonic()); this.setMnemonic(getMenuKeySet().getMnemonic());
this.setSmallIcon(BaseUtils.readIcon("/com/fr/design/images/m_insert/chart.png")); this.setSmallIcon(BaseUtils.readIcon("/com/fr/design/images/m_insert/chart.png"));
} }

2
designer/src/com/fr/design/actions/insert/flot/FormulaFloatAction.java

@ -27,7 +27,7 @@ public class FormulaFloatAction extends AbstractShapeAction {
public FormulaFloatAction(ElementCasePane t) { public FormulaFloatAction(ElementCasePane t) {
super(t); super(t);
this.setMenuKeySet(FLOAT_INSERT_FORMULA); this.setMenuKeySet(FLOAT_INSERT_FORMULA);
this.setName(getMenuKeySet().getMenuKeySetName() + "..."); this.setName(getMenuKeySet().getMenuKeySetName());
this.setMnemonic(getMenuKeySet().getMnemonic()); this.setMnemonic(getMenuKeySet().getMnemonic());
this.setSmallIcon(BaseUtils.readIcon("/com/fr/design/images/m_insert/formula.png")); this.setSmallIcon(BaseUtils.readIcon("/com/fr/design/images/m_insert/formula.png"));
} }

2
designer/src/com/fr/design/actions/insert/flot/ImageFloatAction.java

@ -34,7 +34,7 @@ public class ImageFloatAction extends ElementCaseAction {
public ImageFloatAction(ElementCasePane t) { public ImageFloatAction(ElementCasePane t) {
super(t); super(t);
this.setMenuKeySet(FLOAT_INSERT_IMAGE); this.setMenuKeySet(FLOAT_INSERT_IMAGE);
this.setName(getMenuKeySet().getMenuKeySetName() + "..."); this.setName(getMenuKeySet().getMenuKeySetName());
this.setMnemonic(getMenuKeySet().getMnemonic()); this.setMnemonic(getMenuKeySet().getMnemonic());
this.setSmallIcon(BaseUtils.readIcon("/com/fr/design/images/m_insert/image.png")); this.setSmallIcon(BaseUtils.readIcon("/com/fr/design/images/m_insert/image.png"));
} }

2
designer/src/com/fr/design/actions/insert/flot/TextBoxFloatAction.java

@ -26,7 +26,7 @@ public class TextBoxFloatAction extends AbstractShapeAction {
public TextBoxFloatAction(ElementCasePane t) { public TextBoxFloatAction(ElementCasePane t) {
super(t); super(t);
this.setMenuKeySet(FLOAT_INSERT_TEXT); this.setMenuKeySet(FLOAT_INSERT_TEXT);
this.setName(getMenuKeySet().getMenuKeySetName() + "..."); this.setName(getMenuKeySet().getMenuKeySetName());
this.setMnemonic(getMenuKeySet().getMnemonic()); this.setMnemonic(getMenuKeySet().getMnemonic());
this.setSmallIcon(BaseUtils.readIcon("/com/fr/design/images/m_insert/text.png")); this.setSmallIcon(BaseUtils.readIcon("/com/fr/design/images/m_insert/text.png"));
} }

2
designer/src/com/fr/design/mainframe/ReportFloatPane.java

@ -67,7 +67,7 @@ public class ReportFloatPane extends JPanel {
} }
private MenuDef createInsertToolBar() { private MenuDef createInsertToolBar() {
MenuDef insertFloatMenu = new MenuDef(); MenuDef insertFloatMenu = new MenuDef(true);
insertFloatMenu.setName(KeySetUtils.INSERT_FLOAT.getMenuKeySetName()); insertFloatMenu.setName(KeySetUtils.INSERT_FLOAT.getMenuKeySetName());
insertFloatMenu.setTooltip(Inter.getLocText("FR-Designer_T_Insert_Float")); insertFloatMenu.setTooltip(Inter.getLocText("FR-Designer_T_Insert_Float"));
insertFloatMenu.setIconPath("com/fr/design/images/control/addPopup.png"); insertFloatMenu.setIconPath("com/fr/design/images/control/addPopup.png");

17
designer_base/src/com/fr/design/actions/UpdateAction.java

@ -9,8 +9,7 @@ import com.fr.base.Style;
import com.fr.design.actions.core.ActionFactory; import com.fr.design.actions.core.ActionFactory;
import com.fr.design.constants.UIConstants; import com.fr.design.constants.UIConstants;
import com.fr.design.gui.ibutton.UIButton; import com.fr.design.gui.ibutton.UIButton;
import com.fr.design.gui.imenu.UICheckBoxMenuItem; import com.fr.design.gui.imenu.*;
import com.fr.design.gui.imenu.UIMenuItem;
import com.fr.design.menu.ShortCut; import com.fr.design.menu.ShortCut;
import com.fr.design.selection.SelectionListener; import com.fr.design.selection.SelectionListener;
import com.fr.general.ComparatorUtils; import com.fr.general.ComparatorUtils;
@ -249,10 +248,17 @@ public abstract class UpdateAction extends ShortCut implements Action {
this.putValue(UIMenuItem.class.getName(), object); this.putValue(UIMenuItem.class.getName(), object);
} }
return (UIMenuItem) object; return (UIMenuItem) object;
} }
public UIMenuEastAttrItem createMenuItemEastAttr() {
UIMenuEastAttrItem menuItem = new UIMenuEastAttrItem(this);
// 设置名字用作单元测
menuItem.setName(getName());
this.putValue(UIMenuItem.class.getName(), menuItem);
return menuItem;
}
/** /**
* Gets component on toolbar. * Gets component on toolbar.
* *
@ -317,7 +323,10 @@ public abstract class UpdateAction extends ShortCut implements Action {
@Override @Override
public void intoJPopupMenu(JPopupMenu menu) { public void intoJPopupMenu(JPopupMenu menu) {
update(); update();
if (menu instanceof UIPopupEastAttrMenu){
menu.add(this.createMenuItemEastAttr());
return;
}
menu.add(this.createMenuItem()); menu.add(this.createMenuItem());
} }

1
designer_base/src/com/fr/design/gui/controlpane/UIListControlPane.java

@ -488,6 +488,7 @@ public abstract class UIListControlPane extends UIControlPane {
*/ */
protected class AddItemMenuDef extends MenuDef { protected class AddItemMenuDef extends MenuDef {
public AddItemMenuDef(NameableCreator[] creators) { public AddItemMenuDef(NameableCreator[] creators) {
super(true);
this.setName(Inter.getLocText("FR-Action_Add")); this.setName(Inter.getLocText("FR-Action_Add"));
this.setMnemonic('A'); this.setMnemonic('A');
this.setIconPath("/com/fr/design/images/control/addPopup.png"); this.setIconPath("/com/fr/design/images/control/addPopup.png");

103
designer_base/src/com/fr/design/gui/imenu/UIMenuEastAttrItem.java

@ -0,0 +1,103 @@
package com.fr.design.gui.imenu;
import com.fr.design.constants.UIConstants;
import com.fr.design.utils.gui.GUIPaintUtils;
import com.fr.stable.Constants;
import com.fr.stable.StringUtils;
import sun.swing.SwingUtilities2;
import javax.swing.*;
import javax.swing.plaf.basic.BasicMenuItemUI;
import java.awt.*;
/**
* 右侧属性面板悬浮元素超级链接弹窗重绘
*/
public class UIMenuEastAttrItem extends JMenuItem {
public UIMenuEastAttrItem() {
this(StringUtils.BLANK);
}
public UIMenuEastAttrItem(String string) {
this(string, null);
}
public UIMenuEastAttrItem(String string, Icon pageSmallIcon) {
super(string, pageSmallIcon);
setBackground(UIConstants.NORMAL_BACKGROUND);
setUI(new UIMenuItemEastAttrUI());
}
public UIMenuEastAttrItem(String string, int key) {
super(string, key);
setBackground(UIConstants.NORMAL_BACKGROUND);
setUI(new UIMenuItemEastAttrUI());
}
public UIMenuEastAttrItem(Action action) {
this();
setAction(action);
}
@Override
public String getText() {
return StringUtils.BLANK + super.getText();
}
private class UIMenuItemEastAttrUI extends BasicMenuItemUI {
@Override
protected void paintBackground(Graphics g, JMenuItem menuItem,Color bgColor) {
if(menuItem.getIcon() != null) {
menuItem.setIcon(null);
}
ButtonModel model = menuItem.getModel();
Color oldColor = g.getColor();
int menuWidth = menuItem.getWidth();
int menuHeight = menuItem.getHeight();
g.setColor(UIConstants.NORMAL_BACKGROUND);
g.fillRect(0, 0, menuWidth, menuHeight);
if (menuItem.isOpaque()) {
if (model.isArmed() || (menuItem instanceof JMenu && model.isSelected())) {
GUIPaintUtils.fillPaint((Graphics2D) g, 0, 0, menuWidth, menuHeight, true, Constants.NULL, UIConstants.FLESH_BLUE, 0);
} else {
GUIPaintUtils.fillPaint((Graphics2D) g, 0, 0, menuWidth, menuHeight, true, Constants.NULL, UIConstants.TOOLBARUI_BACKGROUND, 0);
}
g.setColor(oldColor);
}
else if (model.isArmed() || (menuItem instanceof JMenu &&
model.isSelected())) {
GUIPaintUtils.fillPaint((Graphics2D)g, 0, 0, menuWidth, menuHeight, true, Constants.NULL, UIConstants.FLESH_BLUE, 7);
g.setColor(oldColor);
}
}
protected void paintText(Graphics g, JMenuItem menuItem, Rectangle textRect, String text) {
ButtonModel model = menuItem.getModel();
FontMetrics fm = SwingUtilities2.getFontMetrics(menuItem, g);
if(!model.isEnabled()) {
// *** paint the text disabled
if ( UIManager.get("MenuItem.disabledForeground") instanceof Color ) {
g.setColor( UIManager.getColor("MenuItem.disabledForeground") );
SwingUtilities2.drawStringUnderlineCharAt(menuItem, g,text,
-1, textRect.x, textRect.y + fm.getAscent());
} else {
g.setColor(menuItem.getBackground().brighter());
SwingUtilities2.drawStringUnderlineCharAt(menuItem, g, text,
-1, textRect.x, textRect.y + fm.getAscent());
g.setColor(menuItem.getBackground().darker());
SwingUtilities2.drawStringUnderlineCharAt(menuItem, g,text,
-1, textRect.x - 1, textRect.y +
fm.getAscent() - 1);
}
} else {
SwingUtilities2.drawStringUnderlineCharAt(menuItem, g, text,
-1, 0, textRect.y + fm.getAscent());
}
}
}
}

2
designer_base/src/com/fr/design/gui/imenu/UIMenuItem.java

@ -37,7 +37,7 @@ public class UIMenuItem extends JMenuItem{
this(); this();
setAction(action); setAction(action);
} }
@Override @Override
public String getText() { public String getText() {
return StringUtils.BLANK + super.getText(); return StringUtils.BLANK + super.getText();

28
designer_base/src/com/fr/design/gui/imenu/UIPopupEastAttrMenu.java

@ -0,0 +1,28 @@
package com.fr.design.gui.imenu;
import java.awt.Graphics;
import java.awt.Insets;
import javax.swing.JPopupMenu;
import com.fr.design.constants.UIConstants;
public class UIPopupEastAttrMenu extends JPopupMenu {
public UIPopupEastAttrMenu() {
super();
setBackground(UIConstants.NORMAL_BACKGROUND);
}
@Override
protected void paintBorder(Graphics g) {
g.setColor(UIConstants.POP_DIALOG_BORDER);
g.drawRect(0, 0, getWidth() - 1, getHeight() - 1);
}
@Override
public Insets getInsets() {
return new Insets(0, 1, 1, 1);
}
}

4
designer_base/src/com/fr/design/gui/imenu/UIPopupMenu.java

@ -13,13 +13,13 @@ public class UIPopupMenu extends JPopupMenu{
super(); super();
setBackground(UIConstants.NORMAL_BACKGROUND); setBackground(UIConstants.NORMAL_BACKGROUND);
} }
@Override @Override
protected void paintBorder(Graphics g) { protected void paintBorder(Graphics g) {
g.setColor(UIConstants.LINE_COLOR); g.setColor(UIConstants.LINE_COLOR);
g.drawRect(0, 0, getWidth() - 1, getHeight() - 1); g.drawRect(0, 0, getWidth() - 1, getHeight() - 1);
} }
@Override @Override
public Insets getInsets() { public Insets getInsets() {
if(onlyText) { if(onlyText) {

734
designer_base/src/com/fr/design/menu/MenuDef.java

@ -3,6 +3,7 @@ package com.fr.design.menu;
import com.fr.base.BaseUtils; import com.fr.base.BaseUtils;
import com.fr.design.gui.ibutton.UIButton; import com.fr.design.gui.ibutton.UIButton;
import com.fr.design.gui.imenu.UIMenu; import com.fr.design.gui.imenu.UIMenu;
import com.fr.design.gui.imenu.UIPopupEastAttrMenu;
import com.fr.design.gui.imenu.UIPopupMenu; import com.fr.design.gui.imenu.UIPopupMenu;
import com.fr.design.gui.imenu.UIScrollMenu; import com.fr.design.gui.imenu.UIScrollMenu;
import com.fr.design.gui.iscrollbar.UIScrollBar; import com.fr.design.gui.iscrollbar.UIScrollBar;
@ -13,7 +14,10 @@ import javax.swing.*;
import javax.swing.event.MenuEvent; import javax.swing.event.MenuEvent;
import javax.swing.event.MenuListener; import javax.swing.event.MenuListener;
import java.awt.*; import java.awt.*;
import java.awt.event.*; import java.awt.event.ContainerListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@ -22,338 +26,406 @@ import java.util.List;
*/ */
public class MenuDef extends ShortCut { public class MenuDef extends ShortCut {
protected String name; private static final int MENU_DEFAULTWDITH = 156;
protected char mnemonic; protected String name;
protected String iconPath; //右侧属性表弹出框重绘
protected String tooltip; protected Boolean isEastAttr = false;
//item List. protected char mnemonic;
private List<ShortCut> shortcutList = new ArrayList<ShortCut>(); protected String iconPath;
// peter:产生的JMenu, UIButton以及enabled变量都是为由MenuDef产生的控件所用的 protected String tooltip;
protected boolean enabled = true; //item List.
protected UIMenu createdJMenu; private List<ShortCut> shortcutList = new ArrayList<ShortCut>();
protected UIButton createdButton; // peter:产生的JMenu, UIButton以及enabled变量都是为由MenuDef产生的控件所用的
protected JPopupMenu popupMenu; protected boolean enabled = true;
private boolean hasScrollSubMenu; protected UIMenu createdJMenu;
protected UIButton createdButton;
private String anchor; protected JPopupMenu popupMenu;
private boolean hasScrollSubMenu;
public MenuDef() {
} private String anchor;
public MenuDef(String name) { public MenuDef() {
this.setName(name); }
}
public MenuDef(String name) {
public MenuDef(String name, char mnemonic) { this.setName(name);
this.setName(name); }
this.setMnemonic(mnemonic);
} public MenuDef(Boolean rePaint) {
this.setRePaint(rePaint);
public String getName() { }
return name;
} public MenuDef(String name, char mnemonic) {
this.setName(name);
public void setName(String name) { this.setMnemonic(mnemonic);
this.name = name; }
}
public String getName() {
public char getMnemonic() { return name;
return mnemonic; }
}
public void setName(String name) {
public void setMnemonic(char mnemonic) { this.name = name;
this.mnemonic = mnemonic; }
}
public boolean getRePaint() {
public void setHasScrollSubMenu(boolean scrollSubMenu) { return isEastAttr;
this.hasScrollSubMenu = scrollSubMenu; }
}
public void setRePaint(boolean rePaint) {
public String getIconPath() { this.isEastAttr = rePaint;
return iconPath; }
}
public char getMnemonic() {
public void setIconPath(String iconPath) { return mnemonic;
this.iconPath = iconPath; }
}
public void setMnemonic(char mnemonic) {
public int getShortCutCount() { this.mnemonic = mnemonic;
return this.shortcutList.size(); }
}
public void setHasScrollSubMenu(boolean scrollSubMenu) {
public ShortCut getShortCut(int index) { this.hasScrollSubMenu = scrollSubMenu;
return this.shortcutList.get(index); }
}
public String getIconPath() {
public String getAnchor() { return iconPath;
return anchor == null ? StringUtils.EMPTY : anchor; }
}
public void setIconPath(String iconPath) {
public void setAnchor(String anchor) { this.iconPath = iconPath;
this.anchor = anchor; }
}
public int getShortCutCount() {
public List<ShortCut> getShortcutList() { return this.shortcutList.size();
return this.shortcutList; }
}
public ShortCut getShortCut(int index) {
/** return this.shortcutList.get(index);
* 插入菜单项 }
* @param index 插入的位置
* @param shortCut 菜单信息 public String getAnchor() {
*/ return anchor == null ? StringUtils.EMPTY : anchor;
public void insertShortCut(int index, ShortCut shortCut) { }
int size = this.shortcutList.size();
index = Math.min(index, size); public void setAnchor(String anchor) {
this.shortcutList.add(index, shortCut); this.anchor = anchor;
} }
/** public List<ShortCut> getShortcutList() {
* 用可变参数方便添加数组 return this.shortcutList;
* @param shortcut 参数 存储菜单项信息 }
*/
public void addShortCut(ShortCut... shortcut) { /**
for (ShortCut i : shortcut) { * 插入菜单项
this.shortcutList.add(i); *
} * @param index 插入的位置
} * @param shortCut 菜单信息
*/
public void insertShortCut(int index, ShortCut shortCut) {
int size = this.shortcutList.size();
index = Math.min(index, size);
this.shortcutList.add(index, shortCut);
}
/**
* 用可变参数方便添加数组
*
* @param shortcut 参数 存储菜单项信息
*/
public void addShortCut(ShortCut... shortcut) {
for (ShortCut i : shortcut) {
this.shortcutList.add(i);
}
}
public void removeShortCut(ShortCut shortCut) { public void removeShortCut(ShortCut shortCut) {
this.shortcutList.remove(shortCut); this.shortcutList.remove(shortCut);
} }
/** /**
* 清理 * 清理
*/ */
public void clearShortCuts() { public void clearShortCuts() {
this.shortcutList.clear(); this.shortcutList.clear();
} }
/** /**
* 生成UIButton * 生成UIButton
* @return 菜单按钮 *
*/ * @return 菜单按钮
public UIButton createUIButton() { */
if (createdButton == null) { public UIButton createUIButton() {
if (iconPath != null) { if (createdButton == null) {
createdButton = new UIButton(BaseUtils.readIcon(iconPath)); if (iconPath != null) {
createdButton.set4ToolbarButton(); createdButton = new UIButton(BaseUtils.readIcon(iconPath));
} else { createdButton.set4ToolbarButton();
createdButton = new UIButton(name); } else {
} createdButton = new UIButton(name);
// 添加名字以作自动化测试 }
createdButton.setName(name); // 添加名字以作自动化测试
createdButton.setToolTipText(tooltip); createdButton.setName(name);
createdButton.addMouseListener(mouseListener); createdButton.setToolTipText(tooltip);
} createdButton.addMouseListener(mouseListener);
}
return createdButton;
} return createdButton;
}
public void setTooltip(String text) {
this.tooltip = text; public void setTooltip(String text) {
} this.tooltip = text;
}
/**
* 生成JMenu /**
* @return 菜单 * 生成JMenu
*/ *
public UIMenu createJMenu() { * @return 菜单
if (createdJMenu == null) { */
if (hasScrollSubMenu) { public UIMenu createJMenu() {
createdJMenu = new UIScrollMenu(this.getName()); if (createdJMenu == null) {
} else { if (hasScrollSubMenu) {
createdJMenu = new UIMenu(this.getName()); createdJMenu = new UIScrollMenu(this.getName());
} } else {
createdJMenu.setMnemonic(this.getMnemonic()); createdJMenu = new UIMenu(this.getName());
if (this.iconPath != null) { }
createdJMenu.setIcon(BaseUtils.readIcon(this.iconPath)); createdJMenu.setMnemonic(this.getMnemonic());
} if (this.iconPath != null) {
createdJMenu.addMenuListener(menuDefListener); createdJMenu.setIcon(BaseUtils.readIcon(this.iconPath));
ContainerListener listener = getContainerListener(); }
if(listener != null){ createdJMenu.addMenuListener(menuDefListener);
createdJMenu.getPopupMenu().addContainerListener(listener); ContainerListener listener = getContainerListener();
} if (listener != null) {
} createdJMenu.getPopupMenu().addContainerListener(listener);
}
return createdJMenu; }
}
return createdJMenu;
protected ContainerListener getContainerListener() { }
return null;
} protected ContainerListener getContainerListener() {
/** return null;
* 生成 JPopupMenu }
* @return 弹出菜单
*/ /**
public JPopupMenu createJPopupMenu() { * 生成 JPopupMenu
UIMenu menu = createJMenu(); *
updateMenu(); * @return 弹出菜单
return menu.getPopupMenu(); */
} public JPopupMenu createJPopupMenu() {
UIMenu menu = createJMenu();
/** updateMenu();
* 设置是否可用 return menu.getPopupMenu();
* @param b 布尔型 }
*/
@Override /**
public void setEnabled(boolean b) { * 设置是否可用
this.enabled = b; *
* @param b 布尔型
if (createdButton != null) { */
createdButton.setEnabled(enabled); @Override
} public void setEnabled(boolean b) {
this.enabled = b;
if (createdJMenu != null) {
createdJMenu.setEnabled(enabled); if (createdButton != null) {
} createdButton.setEnabled(enabled);
} }
/** if (createdJMenu != null) {
* 按钮状态 createdJMenu.setEnabled(enabled);
* @return 状态 }
*/ }
@Override
public boolean isEnabled() { /**
return enabled; * 按钮状态
} *
* @return 状态
/** */
* 更新菜单 @Override
*/ public boolean isEnabled() {
public void updateMenu() { return enabled;
//peter:这个方法用来产生JMenu的孩子控件,但是不update,action. }
this.updatePopupMenu(this.createJMenu().getPopupMenu());
/**
//peter:需要设置JMenu的enabled属性. * 更新菜单
if (createdJMenu != null) { */
createdJMenu.setEnabled(createdJMenu.getPopupMenu().getComponentCount() > 0 && enabled); public void updateMenu() {
createdJMenu.repaint(10); //peter:这个方法用来产生JMenu的孩子控件,但是不update,action.
} this.updatePopupMenu(this.createJMenu().getPopupMenu());
}
//peter:需要设置JMenu的enabled属性.
/** if (createdJMenu != null) {
* 更新菜单 createdJMenu.setEnabled(createdJMenu.getPopupMenu().getComponentCount() > 0 && enabled);
* @param popupMenu 菜单 createdJMenu.repaint(10);
*/ }
protected void updatePopupMenu(JPopupMenu popupMenu) { }
removeComponent(popupMenu);
this.popupMenu = popupMenu; /**
// 一开始是不能插入分隔符的 * 更新菜单
boolean nec_seperator = false; *
boolean isFirstItem = true; * @param popupMenu 菜单
int actionCount = this.getShortCutCount(); */
for (int i = 0; i < actionCount; i++) { protected void updatePopupMenu(JPopupMenu popupMenu) {
ShortCut shortcut = this.getShortCut(i); removeComponent(popupMenu);
this.popupMenu = popupMenu;
// 如果shortcut是SeparatorDef,先不加,先标记一下nec_seperator为true,等下一个shortcut需要加到PopupMenu时再加 // 一开始是不能插入分隔符的
if (shortcut instanceof SeparatorDef) { boolean nec_seperator = false;
nec_seperator = true; boolean isFirstItem = true;
continue; int actionCount = this.getShortCutCount();
} for (int i = 0; i < actionCount; i++) {
if (nec_seperator) { ShortCut shortcut = this.getShortCut(i);
if (!isFirstItem) {
SeparatorDef.DEFAULT.intoJPopupMenu(popupMenu); // 如果shortcut是SeparatorDef,先不加,先标记一下nec_seperator为true,等下一个shortcut需要加到PopupMenu时再加
} if (shortcut instanceof SeparatorDef) {
nec_seperator = false; nec_seperator = true;
} continue;
}
shortcut.intoJPopupMenu(popupMenu); if (nec_seperator) {
isFirstItem = false; if (!isFirstItem) {
} SeparatorDef.DEFAULT.intoJPopupMenu(popupMenu);
}
if (createdJMenu != null && createdJMenu.getPopupMenu() != null){ nec_seperator = false;
setEnabled(createdJMenu.getPopupMenu().getComponentCount() > 0 && enabled); }
}
} shortcut.intoJPopupMenu(popupMenu);
isFirstItem = false;
/** }
* 删除所有组件 除了滚动条
* @param popupMenu 菜单 if (createdJMenu != null && createdJMenu.getPopupMenu() != null) {
*/ setEnabled(createdJMenu.getPopupMenu().getComponentCount() > 0 && enabled);
public void removeComponent(JPopupMenu popupMenu){ }
UIScrollBar uiScrollBar = new UIScrollBar(); }
if(hasScrollSubMenu){
for(Component comp : popupMenu.getComponents()){ /**
if(comp instanceof UIScrollBar){ * 更新右侧属性面板菜单
uiScrollBar =(UIScrollBar) comp; *
} * @param popupMenu 菜单
} */
} protected void updateEastPopupMenu(JPopupMenu popupMenu) {
popupMenu.removeAll(); removeComponent(popupMenu);
if(hasScrollSubMenu){ this.popupMenu = popupMenu;
popupMenu.add(uiScrollBar); // 一开始是不能插入分隔符的
} boolean nec_seperator = false;
} boolean isFirstItem = true;
int actionCount = this.getShortCutCount();
/** for (int i = 0; i < actionCount; i++) {
* 添加菜单项 ShortCut shortcut = this.getShortCut(i);
* @param menu 菜单
*/ // 如果shortcut是SeparatorDef,先不加,先标记一下nec_seperator为true,等下一个shortcut需要加到PopupMenu时再加
@Override if (shortcut instanceof SeparatorDef) {
public void intoJPopupMenu(JPopupMenu menu) { nec_seperator = true;
updateMenu(); continue;
}
menu.add(this.createJMenu()); if (nec_seperator) {
} if (!isFirstItem) {
SeparatorDef.DEFAULT.intoJPopupMenu(popupMenu);
/** }
* 添加 nec_seperator = false;
* @param toolBar 菜单条 }
*/ shortcut.intoJPopupMenu(popupMenu);
@Override isFirstItem = false;
public void intoJToolBar(JToolBar toolBar) { }
toolBar.add(this.createUIButton());
} if (createdJMenu != null && createdJMenu.getPopupMenu() != null) {
setEnabled(createdJMenu.getPopupMenu().getComponentCount() > 0 && enabled);
private MenuListener menuDefListener = new MenuListener() { }
}
@Override
public void menuCanceled(MenuEvent evt) { /**
} * 删除所有组件 除了滚动条
*
@Override * @param popupMenu 菜单
public void menuDeselected(MenuEvent evt) { */
} public void removeComponent(JPopupMenu popupMenu) {
UIScrollBar uiScrollBar = new UIScrollBar();
@Override if (hasScrollSubMenu) {
public void menuSelected(MenuEvent evt) { for (Component comp : popupMenu.getComponents()) {
Object source = evt.getSource(); if (comp instanceof UIScrollBar) {
if (!(source instanceof JMenu)) { uiScrollBar = (UIScrollBar) comp;
return; }
} }
}
MenuDef.this.updateMenu(); popupMenu.removeAll();
} if (hasScrollSubMenu) {
}; popupMenu.add(uiScrollBar);
private MouseListener mouseListener = new MouseAdapter() { }
}
@Override
public void mouseReleased(MouseEvent evt) { /**
Object source = evt.getSource(); * 添加菜单项
UIButton button = (UIButton) source; *
if (!button.isEnabled()) { * @param menu 菜单
return; */
} @Override
public void intoJPopupMenu(JPopupMenu menu) {
UIPopupMenu popupMenu = new UIPopupMenu(); updateMenu();
popupMenu.setInvoker(button);
MenuDef.this.updatePopupMenu(popupMenu); menu.add(this.createJMenu());
}
GUICoreUtils.showPopupMenu(popupMenu, button, 0, button.getSize().height);
} /**
}; * 添加
*
* @param toolBar 菜单条
//ben: for ui test */
public JPopupMenu getPopupMenu() { @Override
return popupMenu; public void intoJToolBar(JToolBar toolBar) {
} toolBar.add(this.createUIButton());
}
public void setPopupMenu(JPopupMenu popupMenu) {
this.popupMenu = popupMenu; private MenuListener menuDefListener = new MenuListener() {
}
@Override
public void menuCanceled(MenuEvent evt) {
}
@Override
public void menuDeselected(MenuEvent evt) {
}
@Override
public void menuSelected(MenuEvent evt) {
Object source = evt.getSource();
if (!(source instanceof JMenu)) {
return;
}
MenuDef.this.updateMenu();
}
};
private MouseListener mouseListener = new MouseAdapter() {
@Override
public void mouseReleased(MouseEvent evt) {
Object source = evt.getSource();
UIButton button = (UIButton) source;
if (!button.isEnabled()) {
return;
}
if (isEastAttr) {
popupMenu = new UIPopupEastAttrMenu();
popupMenu.setInvoker(button);
MenuDef.this.updateEastPopupMenu(popupMenu);
popupMenu.setPopupSize(new Dimension(MENU_DEFAULTWDITH, popupMenu.getPreferredSize().height));
GUICoreUtils.showPopupMenu(popupMenu, button, 0, button.getSize().height);
} else {
popupMenu = new UIPopupMenu();
popupMenu.setInvoker(button);
MenuDef.this.updatePopupMenu(popupMenu);
GUICoreUtils.showPopupMenu(popupMenu, button, 0, button.getSize().height);
}
}
};
//ben: for ui test
public JPopupMenu getPopupMenu() {
return popupMenu;
}
public void setPopupMenu(JPopupMenu popupMenu) {
this.popupMenu = popupMenu;
}
} }
Loading…
Cancel
Save