Browse Source

Merge pull request #25 in DESIGN/design from ~YAOH.WU/aa-design:feature/10.0 to feature/10.0

* commit '923038368765fbe024ea54872191c621e089be66':
  REPORT-6441 ctrl快捷键失灵 同步到10
master
superman 6 years ago
parent
commit
ea5794b115
  1. 126
      designer_base/src/com/fr/design/gui/imenu/UIHeadMenu.java
  2. 610
      designer_base/src/com/fr/design/gui/imenu/UIMenu.java
  3. 118
      designer_base/src/com/fr/design/gui/imenu/UIScrollMenu.java
  4. 65
      designer_form/src/com/fr/design/mainframe/FormParaWidgetPane.java

126
designer_base/src/com/fr/design/gui/imenu/UIHeadMenu.java

@ -3,10 +3,22 @@ package com.fr.design.gui.imenu;
import com.fr.design.constants.UIConstants;
import com.fr.design.utils.gui.GUIPaintUtils;
import javax.swing.*;
import javax.swing.Action;
import javax.swing.JButton;
import javax.swing.JMenuItem;
import javax.swing.JPopupMenu;
import javax.swing.MenuElement;
import javax.swing.border.Border;
import java.awt.*;
import java.awt.Component;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Insets;
import java.awt.RenderingHints;
import java.awt.Shape;
/**
* @author null
*/
public class UIHeadMenu extends UIMenu {
private static final float REC = 8f;
private JPopupMenu popupMenu;
@ -15,6 +27,7 @@ public class UIHeadMenu extends UIMenu {
super(name);
}
@Override
public JPopupMenu getPopupMenu() {
ensurePopupMenuCreated();
popupMenu.setBackground(UIConstants.NORMAL_BACKGROUND);
@ -44,16 +57,17 @@ public class UIHeadMenu extends UIMenu {
return popupMenu;
}
@Override
protected void ensurePopupMenuCreated() {
if (popupMenu == null) {
this.popupMenu = new JPopupMenu() {
@Override
protected void paintComponent(Graphics g) {
Graphics2D g2d = (Graphics2D) g;
float wdith = getWidth();
float heigth = getHeight();
float width = getWidth();
float height = getHeight();
Shape shape = GUIPaintUtils.paintShape(g2d, wdith, heigth, REC);
Shape shape = GUIPaintUtils.paintShape(g2d, width, height, REC);
g2d.setClip(shape);
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
super.paintComponent(g2d);
@ -65,7 +79,7 @@ public class UIHeadMenu extends UIMenu {
}
/**
*画界面
* 画界面
*/
@Override
public void updateUI() {
@ -74,8 +88,10 @@ public class UIHeadMenu extends UIMenu {
/**
* 判断popupmeu是否隐藏
* @return 如果隐藏 返回true
*
* @return 如果隐藏 返回true
*/
@Override
public boolean isPopupMenuVisible() {
ensurePopupMenuCreated();
return popupMenu.isVisible();
@ -84,9 +100,11 @@ public class UIHeadMenu extends UIMenu {
/**
* 设置popupmenu位置
* @param x
* @param y
*
* @param x x
* @param y y
*/
@Override
public void setMenuLocation(int x, int y) {
super.setMenuLocation(x, y);
if (popupMenu != null) {
@ -96,9 +114,11 @@ public class UIHeadMenu extends UIMenu {
/**
* 向popupmenu添加 JMenuItem
*
* @param menuItem 菜单项
* @return 菜单项
* @return 菜单项
*/
@Override
public JMenuItem add(JMenuItem menuItem) {
ensurePopupMenuCreated();
return popupMenu.add(menuItem);
@ -106,9 +126,11 @@ public class UIHeadMenu extends UIMenu {
/**
* 添加组件
* @param c 组件
* @return 组件
*
* @param c 组件
* @return 组件
*/
@Override
public Component add(Component c) {
ensurePopupMenuCreated();
popupMenu.add(c);
@ -117,10 +139,12 @@ public class UIHeadMenu extends UIMenu {
/**
* 向指定位置添加组件
* @param c 组件
* @param index 位置
* @return 组件
*
* @param c 组件
* @param index 位置
* @return 组件
*/
@Override
public Component add(Component c, int index) {
ensurePopupMenuCreated();
popupMenu.add(c, index);
@ -131,6 +155,7 @@ public class UIHeadMenu extends UIMenu {
/**
* 添加分隔符
*/
@Override
public void addSeparator() {
ensurePopupMenuCreated();
popupMenu.addSeparator();
@ -138,9 +163,11 @@ public class UIHeadMenu extends UIMenu {
/**
* 添加menuitem到指定位置
* @param s 字符
* @param pos 位置
*
* @param s 字符
* @param pos 位置
*/
@Override
public void insert(String s, int pos) {
if (pos < 0) {
throw new IllegalArgumentException("index less than zero.");
@ -152,10 +179,12 @@ public class UIHeadMenu extends UIMenu {
/**
* 添加么会特么到指定位置
* @param mi 菜单项
* @param pos 位置
* @return 菜单项
*
* @param mi 菜单项
* @param pos 位置
* @return 菜单项
*/
@Override
public JMenuItem insert(JMenuItem mi, int pos) {
if (pos < 0) {
throw new IllegalArgumentException("index less than zero.");
@ -167,10 +196,12 @@ public class UIHeadMenu extends UIMenu {
/**
* 添加到指定位置
* @param a 事件
* @param pos 位置
* @return 菜单项
*
* @param a 事件
* @param pos 位置
* @return 菜单项
*/
@Override
public JMenuItem insert(Action a, int pos) {
if (pos < 0) {
throw new IllegalArgumentException("index less than zero.");
@ -185,9 +216,11 @@ public class UIHeadMenu extends UIMenu {
}
/**
* 添加分隔符到指定位置
* @param index 指定位置
* 添加分隔符到指定位置
*
* @param index 指定位置
*/
@Override
public void insertSeparator(int index) {
if (index < 0) {
throw new IllegalArgumentException("index less than zero.");
@ -200,8 +233,10 @@ public class UIHeadMenu extends UIMenu {
/**
* 移除
* @param item 菜单项
*
* @param item 菜单项
*/
@Override
public void remove(JMenuItem item) {
if (popupMenu != null) {
popupMenu.remove(item);
@ -210,8 +245,10 @@ public class UIHeadMenu extends UIMenu {
/**
* 移除指定位置菜单项
* @param pos 指定位置
*
* @param pos 指定位置
*/
@Override
public void remove(int pos) {
if (pos < 0) {
throw new IllegalArgumentException("index less than zero.");
@ -226,8 +263,10 @@ public class UIHeadMenu extends UIMenu {
/**
* 移除组件
* @param c 组件
*
* @param c 组件
*/
@Override
public void remove(Component c) {
if (popupMenu != null) {
popupMenu.remove(c);
@ -237,6 +276,7 @@ public class UIHeadMenu extends UIMenu {
/**
* 移除所有
*/
@Override
public void removeAll() {
if (popupMenu != null) {
popupMenu.removeAll();
@ -244,31 +284,45 @@ public class UIHeadMenu extends UIMenu {
}
/**
* 组件总数
* @return 组件总数
* 组件总数
*
* @return 组件总数
*/
@Override
public int getMenuComponentCount() {
return (popupMenu == null) ? 0 : popupMenu.getComponentCount();
}
/**
* 指定位置组件
* @param n 指定位置
* @return 组件
*
* @param n 指定位置
* @return 组件
*/
@Override
public Component getMenuComponent(int n) {
return (popupMenu == null) ? null : popupMenu.getComponent(n);
}
/**
* 所有组件
* @return 所有组件
*
* @return 所有组件
*/
@Override
public Component[] getMenuComponents() {
return (popupMenu == null) ? new Component[0] : popupMenu.getComponents();
}
@Override
public MenuElement[] getSubElements() {
if (popupMenu == null) {
return new MenuElement[0];
} else {
MenuElement[] result = new MenuElement[1];
result[0] = popupMenu;
return result;
}
}
}

610
designer_base/src/com/fr/design/gui/imenu/UIMenu.java

@ -3,285 +3,341 @@ package com.fr.design.gui.imenu;
import com.fr.design.constants.UIConstants;
import com.fr.stable.StringUtils;
import javax.swing.*;
import javax.swing.Action;
import javax.swing.JButton;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
import javax.swing.JPopupMenu;
import javax.swing.MenuElement;
import javax.swing.border.Border;
import java.awt.*;
import java.awt.Component;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Insets;
import java.awt.RenderingHints;
import java.awt.Shape;
import java.awt.geom.RoundRectangle2D;
/**
* @author null
*/
public class UIMenu extends JMenu {
private static final float REC = 8f;
private JPopupMenu popupMenu;
public UIMenu(String name) {
super(name);
setName(name);
setRolloverEnabled(true);
setBackground(UIConstants.NORMAL_BACKGROUND);
}
@Override
public String getText() {
if (this.getParent() instanceof JPopupMenu) {
return StringUtils.BLANK + super.getText();
}
return " " + super.getText();
}
public JPopupMenu getPopupMenu() {
ensurePopupMenuCreated();
popupMenu.setOpaque(false);
popupMenu.setBorder(new Border() {
@Override
public void paintBorder(Component c, Graphics g, int x, int y, int width, int height) {
Graphics2D g2d = (Graphics2D) g;
int rec = (int) REC;
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_OFF);
g2d.setColor(UIConstants.UIPOPUPMENU_LINE_COLOR);
g2d.drawRoundRect(x, y, width - 1, height - 1,rec, rec);
if (!(UIMenu.this.getParent() instanceof JPopupMenu)) {
g.setColor(UIConstants.NORMAL_BACKGROUND);
g.drawLine(1, 0, UIMenu.this.getWidth() - 2, 0);
}
}
@Override
public boolean isBorderOpaque() {
return false;
}
@Override
public Insets getBorderInsets(Component c) {
return new Insets(5, 2, 10, 10);
}
});
return popupMenu;
}
protected void ensurePopupMenuCreated() {
if (popupMenu == null) {
this.popupMenu = new JPopupMenu() {
@Override
protected void paintComponent(Graphics g) {
Graphics2D g2d = (Graphics2D) g;
int rec = (int) REC;
Shape shape = new RoundRectangle2D.Double(0, 0, getWidth(), getHeight(), REC, REC);
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g2d.setColor(UIConstants.NORMAL_BACKGROUND);
g2d.fillRoundRect(0, 0, getWidth(), getHeight(), rec, rec);
g2d.setClip(shape);
super.paintComponent(g2d);
}
};
popupMenu.setInvoker(this);
popupListener = createWinListener(popupMenu);
}
}
/**
*画界面
*/
@Override
public void updateUI() {
setUI(new UIMenuUI());
}
/**
* 判断popupmeu是否隐藏
* @return 如果隐藏 返回true
*/
public boolean isPopupMenuVisible() {
ensurePopupMenuCreated();
return popupMenu.isVisible();
}
/**
* 设置popupmenu位置
* @param x
* @param y
*/
public void setMenuLocation(int x, int y) {
super.setMenuLocation(x, y);
if (popupMenu != null) {
popupMenu.setLocation(x, y);
}
}
/**
* 向popupmenu添加 JMenuItem
* @param menuItem 菜单项
* @return 菜单项
*/
public JMenuItem add(JMenuItem menuItem) {
ensurePopupMenuCreated();
return popupMenu.add(menuItem);
}
/**
* 添加组件
* @param c 组件
* @return 组件
*/
public Component add(Component c) {
ensurePopupMenuCreated();
popupMenu.add(c);
return c;
}
/**
* 向指定位置添加组件
* @param c 组件
* @param index 位置
* @return 组件
*/
public Component add(Component c, int index) {
ensurePopupMenuCreated();
popupMenu.add(c, index);
return c;
}
/**
* 添加分隔符
*/
public void addSeparator() {
ensurePopupMenuCreated();
popupMenu.addSeparator();
}
/**
* 添加menuitem到指定位置
* @param s 字符
* @param pos 位置
*/
public void insert(String s, int pos) {
if (pos < 0) {
throw new IllegalArgumentException("index less than zero.");
}
ensurePopupMenuCreated();
popupMenu.insert(new JMenuItem(s), pos);
}
/**
* 添加么会特么到指定位置
* @param mi 菜单项
* @param pos 位置
* @return 菜单项
*/
public JMenuItem insert(JMenuItem mi, int pos) {
if (pos < 0) {
throw new IllegalArgumentException("index less than zero.");
}
ensurePopupMenuCreated();
popupMenu.insert(mi, pos);
return mi;
}
/**
* 添加到指定位置
* @param a 事件
* @param pos 位置
* @return 菜单项
*/
public JMenuItem insert(Action a, int pos) {
if (pos < 0) {
throw new IllegalArgumentException("index less than zero.");
}
ensurePopupMenuCreated();
JMenuItem mi = new JMenuItem(a);
mi.setHorizontalTextPosition(JButton.TRAILING);
mi.setVerticalTextPosition(JButton.CENTER);
popupMenu.insert(mi, pos);
return mi;
}
/**
* 添加分隔符到指定位置
* @param index 指定位置
*/
public void insertSeparator(int index) {
if (index < 0) {
throw new IllegalArgumentException("index less than zero.");
}
ensurePopupMenuCreated();
popupMenu.insert(new JPopupMenu.Separator(), index);
}
/**
* 移除
* @param item 菜单项
*/
public void remove(JMenuItem item) {
if (popupMenu != null) {
popupMenu.remove(item);
}
}
/**
* 移除指定位置菜单项
* @param pos 指定位置
*/
public void remove(int pos) {
if (pos < 0) {
throw new IllegalArgumentException("index less than zero.");
}
if (pos > getItemCount()) {
throw new IllegalArgumentException("index greater than the number of items.");
}
if (popupMenu != null) {
popupMenu.remove(pos);
}
}
/**
* 移除组件
* @param c 组件
*/
public void remove(Component c) {
if (popupMenu != null) {
popupMenu.remove(c);
}
}
/**
* 移除所有
*/
public void removeAll() {
if (popupMenu != null) {
popupMenu.removeAll();
}
}
/**
* 组件总数
* @return 组件总数
*/
public int getMenuComponentCount() {
return (popupMenu == null) ? 0 : popupMenu.getComponentCount();
}
/**
* 指定位置组件
* @param n 指定位置
* @return 组件
*/
public Component getMenuComponent(int n) {
return (popupMenu == null) ? null : popupMenu.getComponent(n);
}
/**
* 所有组件
* @return 所有组件
*/
public Component[] getMenuComponents() {
return (popupMenu == null) ? new Component[0] : popupMenu.getComponents();
}
private static final float REC = 8f;
private JPopupMenu popupMenu;
public UIMenu(String name) {
super(name);
setName(name);
setRolloverEnabled(true);
setBackground(UIConstants.NORMAL_BACKGROUND);
}
@Override
public String getText() {
if (this.getParent() instanceof JPopupMenu) {
return StringUtils.BLANK + super.getText();
}
return " " + super.getText();
}
@Override
public JPopupMenu getPopupMenu() {
ensurePopupMenuCreated();
popupMenu.setOpaque(false);
popupMenu.setBorder(new Border() {
@Override
public void paintBorder(Component c, Graphics g, int x, int y, int width, int height) {
Graphics2D g2d = (Graphics2D) g;
int rec = (int) REC;
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_OFF);
g2d.setColor(UIConstants.UIPOPUPMENU_LINE_COLOR);
g2d.drawRoundRect(x, y, width - 1, height - 1, rec, rec);
if (!(UIMenu.this.getParent() instanceof JPopupMenu)) {
g.setColor(UIConstants.NORMAL_BACKGROUND);
g.drawLine(1, 0, UIMenu.this.getWidth() - 2, 0);
}
}
@Override
public boolean isBorderOpaque() {
return false;
}
@Override
public Insets getBorderInsets(Component c) {
return new Insets(5, 2, 10, 10);
}
});
return popupMenu;
}
protected void ensurePopupMenuCreated() {
if (popupMenu == null) {
this.popupMenu = new JPopupMenu() {
@Override
protected void paintComponent(Graphics g) {
Graphics2D g2d = (Graphics2D) g;
int rec = (int) REC;
Shape shape = new RoundRectangle2D.Double(0, 0, getWidth(), getHeight(), REC, REC);
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g2d.setColor(UIConstants.NORMAL_BACKGROUND);
g2d.fillRoundRect(0, 0, getWidth(), getHeight(), rec, rec);
g2d.setClip(shape);
super.paintComponent(g2d);
}
};
popupMenu.setInvoker(this);
popupListener = createWinListener(popupMenu);
}
}
/**
* 画界面
*/
@Override
public void updateUI() {
setUI(new UIMenuUI());
}
/**
* 判断popupmeu是否隐藏
*
* @return 如果隐藏 返回true
*/
@Override
public boolean isPopupMenuVisible() {
ensurePopupMenuCreated();
return popupMenu.isVisible();
}
/**
* 设置popupmenu位置
*
* @param x x
* @param y y
*/
@Override
public void setMenuLocation(int x, int y) {
super.setMenuLocation(x, y);
if (popupMenu != null) {
popupMenu.setLocation(x, y);
}
}
/**
* 向popupmenu添加 JMenuItem
*
* @param menuItem 菜单项
* @return 菜单项
*/
@Override
public JMenuItem add(JMenuItem menuItem) {
ensurePopupMenuCreated();
return popupMenu.add(menuItem);
}
/**
* 添加组件
*
* @param c 组件
* @return 组件
*/
@Override
public Component add(Component c) {
ensurePopupMenuCreated();
popupMenu.add(c);
return c;
}
/**
* 向指定位置添加组件
*
* @param c 组件
* @param index 位置
* @return 组件
*/
@Override
public Component add(Component c, int index) {
ensurePopupMenuCreated();
popupMenu.add(c, index);
return c;
}
/**
* 添加分隔符
*/
@Override
public void addSeparator() {
ensurePopupMenuCreated();
popupMenu.addSeparator();
}
/**
* 添加menuitem到指定位置
*
* @param s 字符
* @param pos 位置
*/
@Override
public void insert(String s, int pos) {
if (pos < 0) {
throw new IllegalArgumentException("index less than zero.");
}
ensurePopupMenuCreated();
popupMenu.insert(new JMenuItem(s), pos);
}
/**
* 添加么会特么到指定位置
*
* @param mi 菜单项
* @param pos 位置
* @return 菜单项
*/
@Override
public JMenuItem insert(JMenuItem mi, int pos) {
if (pos < 0) {
throw new IllegalArgumentException("index less than zero.");
}
ensurePopupMenuCreated();
popupMenu.insert(mi, pos);
return mi;
}
/**
* 添加到指定位置
*
* @param a 事件
* @param pos 位置
* @return 菜单项
*/
@Override
public JMenuItem insert(Action a, int pos) {
if (pos < 0) {
throw new IllegalArgumentException("index less than zero.");
}
ensurePopupMenuCreated();
JMenuItem mi = new JMenuItem(a);
mi.setHorizontalTextPosition(JButton.TRAILING);
mi.setVerticalTextPosition(JButton.CENTER);
popupMenu.insert(mi, pos);
return mi;
}
/**
* 添加分隔符到指定位置
*
* @param index 指定位置
*/
@Override
public void insertSeparator(int index) {
if (index < 0) {
throw new IllegalArgumentException("index less than zero.");
}
ensurePopupMenuCreated();
popupMenu.insert(new JPopupMenu.Separator(), index);
}
/**
* 移除
*
* @param item 菜单项
*/
@Override
public void remove(JMenuItem item) {
if (popupMenu != null) {
popupMenu.remove(item);
}
}
/**
* 移除指定位置菜单项
*
* @param pos 指定位置
*/
@Override
public void remove(int pos) {
if (pos < 0) {
throw new IllegalArgumentException("index less than zero.");
}
if (pos > getItemCount()) {
throw new IllegalArgumentException("index greater than the number of items.");
}
if (popupMenu != null) {
popupMenu.remove(pos);
}
}
/**
* 移除组件
*
* @param c 组件
*/
@Override
public void remove(Component c) {
if (popupMenu != null) {
popupMenu.remove(c);
}
}
/**
* 移除所有
*/
@Override
public void removeAll() {
if (popupMenu != null) {
popupMenu.removeAll();
}
}
/**
* 组件总数
*
* @return 组件总数
*/
@Override
public int getMenuComponentCount() {
return (popupMenu == null) ? 0 : popupMenu.getComponentCount();
}
/**
* 指定位置组件
*
* @param n 指定位置
* @return 组件
*/
@Override
public Component getMenuComponent(int n) {
return (popupMenu == null) ? null : popupMenu.getComponent(n);
}
/**
* 所有组件
*
* @return 所有组件
*/
@Override
public Component[] getMenuComponents() {
return (popupMenu == null) ? new Component[0] : popupMenu.getComponents();
}
@Override
public MenuElement[] getSubElements() {
if (popupMenu == null) {
return new MenuElement[0];
} else {
MenuElement[] result = new MenuElement[1];
result[0] = popupMenu;
return result;
}
}
}

118
designer_base/src/com/fr/design/gui/imenu/UIScrollMenu.java

@ -1,16 +1,22 @@
package com.fr.design.gui.imenu;
import javax.swing.Action;
import javax.swing.JButton;
import javax.swing.JMenuItem;
import javax.swing.JPopupMenu;
import javax.swing.MenuElement;
import java.awt.Component;
import java.awt.ComponentOrientation;
/**
* Created with IntelliJ IDEA.
* User: richie
* Date: 13-12-5
* Time: 上午11:11
*
* @author richie
*/
import javax.swing.*;
import java.awt.*;
public class UIScrollMenu extends UIMenu {
// Covers the one in the JMenu because the method that creates it in JMenu is private
/**
@ -49,6 +55,7 @@ public class UIScrollMenu extends UIMenu {
/**
* Lazily creates the popup menu. This method will create the popup using the <code>JScrollPopupMenu</code> class.
*/
@Override
protected void ensurePopupMenuCreated() {
if (popupMenu == null) {
this.popupMenu = new UIScrollPopUpMenu();
@ -62,17 +69,20 @@ public class UIScrollMenu extends UIMenu {
//////////////////////////////
/**
*画界面
* 画界面
*/
@Override
public void updateUI() {
setUI(new UIMenuUI());
setUI(new UIMenuUI());
}
/**
* 判断popupmeu是否隐藏
* @return 如果隐藏 返回true
*
* @return 如果隐藏 返回true
*/
@Override
public boolean isPopupMenuVisible() {
ensurePopupMenuCreated();
return popupMenu.isVisible();
@ -81,9 +91,11 @@ public class UIScrollMenu extends UIMenu {
/**
* 设置popupmenu位置
*
* @param x
* @param y
*/
@Override
public void setMenuLocation(int x, int y) {
super.setMenuLocation(x, y);
if (popupMenu != null) {
@ -93,9 +105,11 @@ public class UIScrollMenu extends UIMenu {
/**
* 向popupmenu添加 JMenuItem
*
* @param menuItem 菜单项
* @return 菜单项
* @return 菜单项
*/
@Override
public JMenuItem add(JMenuItem menuItem) {
ensurePopupMenuCreated();
return popupMenu.add(menuItem);
@ -103,9 +117,11 @@ public class UIScrollMenu extends UIMenu {
/**
* 添加组件
* @param c 组件
* @return 组件
*
* @param c 组件
* @return 组件
*/
@Override
public Component add(Component c) {
ensurePopupMenuCreated();
popupMenu.add(c);
@ -114,10 +130,12 @@ public class UIScrollMenu extends UIMenu {
/**
* 向指定位置添加组件
* @param c 组件
* @param index 位置
* @return 组件
*
* @param c 组件
* @param index 位置
* @return 组件
*/
@Override
public Component add(Component c, int index) {
ensurePopupMenuCreated();
popupMenu.add(c, index);
@ -128,6 +146,7 @@ public class UIScrollMenu extends UIMenu {
/**
* 添加分隔符
*/
@Override
public void addSeparator() {
ensurePopupMenuCreated();
popupMenu.addSeparator();
@ -135,9 +154,11 @@ public class UIScrollMenu extends UIMenu {
/**
* 添加menuitem到指定位置
* @param s 字符
* @param pos 位置
*
* @param s 字符
* @param pos 位置
*/
@Override
public void insert(String s, int pos) {
if (pos < 0) {
throw new IllegalArgumentException("index less than zero.");
@ -149,10 +170,12 @@ public class UIScrollMenu extends UIMenu {
/**
* 添加么会特么到指定位置
* @param mi 菜单项
* @param pos 位置
* @return 菜单项
*
* @param mi 菜单项
* @param pos 位置
* @return 菜单项
*/
@Override
public JMenuItem insert(JMenuItem mi, int pos) {
if (pos < 0) {
throw new IllegalArgumentException("index less than zero.");
@ -164,10 +187,12 @@ public class UIScrollMenu extends UIMenu {
/**
* 添加到指定位置
* @param a 事件
* @param pos 位置
* @return 菜单项
*
* @param a 事件
* @param pos 位置
* @return 菜单项
*/
@Override
public JMenuItem insert(Action a, int pos) {
if (pos < 0) {
throw new IllegalArgumentException("index less than zero.");
@ -182,9 +207,11 @@ public class UIScrollMenu extends UIMenu {
}
/**
* 添加分隔符到指定位置
* @param index 指定位置
* 添加分隔符到指定位置
*
* @param index 指定位置
*/
@Override
public void insertSeparator(int index) {
if (index < 0) {
throw new IllegalArgumentException("index less than zero.");
@ -197,8 +224,10 @@ public class UIScrollMenu extends UIMenu {
/**
* 移除
* @param item 菜单项
*
* @param item 菜单项
*/
@Override
public void remove(JMenuItem item) {
if (popupMenu != null) {
popupMenu.remove(item);
@ -207,8 +236,10 @@ public class UIScrollMenu extends UIMenu {
/**
* 移除指定位置菜单项
* @param pos 指定位置
*
* @param pos 指定位置
*/
@Override
public void remove(int pos) {
if (pos < 0) {
throw new IllegalArgumentException("index less than zero.");
@ -223,8 +254,10 @@ public class UIScrollMenu extends UIMenu {
/**
* 移除组件
* @param c 组件
*
* @param c 组件
*/
@Override
public void remove(Component c) {
if (popupMenu != null) {
popupMenu.remove(c);
@ -234,6 +267,7 @@ public class UIScrollMenu extends UIMenu {
/**
* 移除所有
*/
@Override
public void removeAll() {
if (popupMenu != null) {
popupMenu.removeAll();
@ -241,34 +275,42 @@ public class UIScrollMenu extends UIMenu {
}
/**
* 组件总数
* @return 组件总数
* 组件总数
*
* @return 组件总数
*/
@Override
public int getMenuComponentCount() {
return (popupMenu == null) ? 0 : popupMenu.getComponentCount();
}
/**
* 指定位置组件
* @param n 指定位置
* @return 组件
*
* @param n 指定位置
* @return 组件
*/
@Override
public Component getMenuComponent(int n) {
return (popupMenu == null) ? null : popupMenu.getComponent(n);
}
/**
* 所有组件
* @return 所有组件
*
* @return 所有组件
*/
@Override
public Component[] getMenuComponents() {
return (popupMenu == null) ? new Component[0] : popupMenu.getComponents();
}
/**
* 取得弹出菜单
* @return 菜单
*
* @return 菜单
*/
@Override
public JPopupMenu getPopupMenu() {
ensurePopupMenuCreated();
return popupMenu;
@ -276,17 +318,21 @@ public class UIScrollMenu extends UIMenu {
/**
* 得到子元素
* @return 子元素
*
* @return 子元素
*/
@Override
public MenuElement[] getSubElements() {
return popupMenu == null ? new MenuElement[0] : new MenuElement[]{popupMenu};
}
/**
* 设置所有组件方位
* 设置所有组件方位
*
* @param o 方位
*/
@Override
public void applyComponentOrientation(ComponentOrientation o) {
super.applyComponentOrientation(o);
@ -301,8 +347,10 @@ public class UIScrollMenu extends UIMenu {
/**
* 设置所有组件方位
*
* @param o 方位
*/
@Override
public void setComponentOrientation(ComponentOrientation o) {
super.setComponentOrientation(o);
if (popupMenu != null) {

65
designer_form/src/com/fr/design/mainframe/FormParaWidgetPane.java

@ -16,7 +16,10 @@ import com.fr.design.gui.ilable.UILabel;
import com.fr.design.gui.imenu.UIPopupMenu;
import com.fr.design.module.DesignModuleFactory;
import com.fr.design.utils.gui.LayoutUtils;
import com.fr.form.ui.*;
import com.fr.form.ui.UserDefinedWidgetConfig;
import com.fr.form.ui.Widget;
import com.fr.form.ui.WidgetConfig;
import com.fr.form.ui.WidgetInfoConfig;
import com.fr.general.ComparatorUtils;
import com.fr.general.GeneralContext;
import com.fr.general.Inter;
@ -27,16 +30,26 @@ import com.fr.plugin.observer.PluginEvent;
import com.fr.plugin.observer.PluginEventListener;
import com.fr.stable.ArrayUtils;
import javax.swing.*;
import java.awt.*;
import javax.swing.JComponent;
import javax.swing.JPanel;
import javax.swing.JSeparator;
import javax.swing.SwingConstants;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
/**
* @author null
*/
public class FormParaWidgetPane extends JPanel {
private static FormParaWidgetPane THIS;
private final static int BORDER = 5;
@ -69,28 +82,28 @@ public class FormParaWidgetPane extends JPanel {
private UILabel paraLabel;
private FormDesigner designer;
static {
GeneralContext.listenPluginRunningChanged(new PluginEventListener() {
@Override
public void on(PluginEvent event) {
synchronized (FormParaWidgetPane.class) {
THIS = null;
}
}
}, new PluginFilter() {
@Override
public boolean accept(PluginContext context) {
return context.contain(PluginModule.ExtraDesign, FormWidgetOptionProvider.XML_TAG);
}
});
}
public static synchronized final FormParaWidgetPane getInstance(FormDesigner designer) {
public static synchronized FormParaWidgetPane getInstance(FormDesigner designer) {
if (THIS == null) {
THIS = new FormParaWidgetPane();
}
@ -102,21 +115,22 @@ public class FormParaWidgetPane extends JPanel {
public FormParaWidgetPane() {
setLayout(new FlowLayout(FlowLayout.LEFT));
DesignerContext.getDesignerFrame().getCenterTemplateCardPane().addComponentListener(new ComponentAdapter() {
@Override
public void componentResized(ComponentEvent e) {
if (FormParaWidgetPane.this.getParent() != null) {
JPanel fother = (JPanel) FormParaWidgetPane.this.getParent();
int delta_wdith = 0;
for (int i = 0; i < fother.getComponentCount() - 1; i++) {
delta_wdith += fother.getComponent(i).getWidth();
JPanel parent = (JPanel) FormParaWidgetPane.this.getParent();
int deltaWidth = 0;
for (int i = 0; i < parent.getComponentCount() - 1; i++) {
deltaWidth += parent.getComponent(i).getWidth();
}
if (delta_wdith == 0) {
if (deltaWidth == 0) {
return;
}
Dimension d = fother.getSize();
setPreferredSize(new Dimension(d.width - delta_wdith, d.height));
LayoutUtils.layoutContainer(fother);
Dimension d = parent.getSize();
setPreferredSize(new Dimension(d.width - deltaWidth, d.height));
LayoutUtils.layoutContainer(parent);
}
}
});
@ -158,7 +172,7 @@ public class FormParaWidgetPane extends JPanel {
}
private void initChartTypePopUp() {
if (chartTypePopupMenu == null){
if (chartTypePopupMenu == null) {
JPanel componentsPara = new JPanel(new FlowLayout(FlowLayout.LEFT));
WidgetOption[] chartOptions = loadChartOptions();
for (WidgetOption chartOption : chartOptions) {
@ -223,9 +237,7 @@ public class FormParaWidgetPane extends JPanel {
predifinedwidgeList.clear();
if (designer != null) {
WidgetOption[] designerPre = designer.getDesignerMode().getPredefinedWidgetOptions();
for (int i = 0; i < designerPre.length; i++) {
predifinedwidgeList.add(designerPre[i]);
}
predifinedwidgeList.addAll(Arrays.asList(designerPre));
}
WidgetInfoConfig mgr = WidgetInfoConfig.getInstance();
Iterator<String> nameIt = mgr.getWidgetConfigNameIterator();
@ -360,6 +372,7 @@ public class FormParaWidgetPane extends JPanel {
}
}
@Override
public void mouseDragged(MouseEvent e) {
if (designer.getParaComponent() != null) {
return;
@ -367,7 +380,7 @@ public class FormParaWidgetPane extends JPanel {
designer.addParaComponent();
JPanel pane = FormWidgetDetailPane.getInstance(designer);
EastRegionContainerPane.getInstance().replaceDownPane(pane);
EastRegionContainerPane.getInstance().replaceWidgetLibPane(pane);
this.setEnabled(false);
designer.addDesignerEditListener(new paraButtonDesignerAdapter(this));
@ -378,6 +391,7 @@ public class FormParaWidgetPane extends JPanel {
}
}
@Override
public void setEnabled(boolean b) {
super.setEnabled(b);
paraLabel.setForeground(b ? Color.BLACK : new Color(198, 198, 198));
@ -397,6 +411,7 @@ public class FormParaWidgetPane extends JPanel {
*
* @param evt 事件
*/
@Override
public void fireCreatorModified(DesignerEvent evt) {
button.setEnabled(designer.getParaComponent() == null);
}
@ -404,14 +419,14 @@ public class FormParaWidgetPane extends JPanel {
private WidgetOption[] loadWidgetOptions() {
if (widgetOptions == null) {
widgetOptions = (WidgetOption[]) ArrayUtils.addAll(WidgetOption.getFormWidgetIntance(), ExtraDesignClassManager.getInstance().getFormWidgetOptions());
widgetOptions = ArrayUtils.addAll(WidgetOption.getFormWidgetIntance(), ExtraDesignClassManager.getInstance().getFormWidgetOptions());
}
return widgetOptions;
}
private WidgetOption[] loadLayoutOptions() {
if (layoutOptions == null) {
layoutOptions = (WidgetOption[]) ArrayUtils.addAll(FormWidgetOption.getFormLayoutInstance(), ExtraDesignClassManager.getInstance().getFormWidgetContainerOptions());
layoutOptions = ArrayUtils.addAll(FormWidgetOption.getFormLayoutInstance(), ExtraDesignClassManager.getInstance().getFormWidgetContainerOptions());
}
return layoutOptions;
}

Loading…
Cancel
Save