Browse Source

Merge pull request #737 in DESIGN/design from ~PLOUGH/10-design:release/10.0 to release/10.0

* commit 'e35ec57ec8a7300d85094ccbc57de93d7d33e4b7':
  REPORT-14057 10.0日文国际化问题处理=>25 tab标题显示不全
  REPORT-14057 10.0日文国际化问题处理=>面板重构;问题14
  REPORT-14057 10.0日文国际化问题处理=>面板重构
bugfix/10.0
plough 6 years ago
parent
commit
07f9c9cde8
  1. 65
      designer-base/src/main/java/com/fr/design/gui/ibutton/UIButton.java
  2. 17
      designer-base/src/main/java/com/fr/design/gui/ibutton/UIHeadGroup.java
  3. 125
      designer-realize/src/main/java/com/fr/design/report/WriteShortCutsPane.java

65
designer-base/src/main/java/com/fr/design/gui/ibutton/UIButton.java

@ -6,22 +6,35 @@ import com.fr.base.GraphHelper;
import com.fr.design.constants.UIConstants; import com.fr.design.constants.UIConstants;
import com.fr.design.event.UIObserver; import com.fr.design.event.UIObserver;
import com.fr.design.event.UIObserverListener; import com.fr.design.event.UIObserverListener;
import com.fr.design.utils.gui.GUICoreUtils;
import com.fr.stable.Constants; import com.fr.stable.Constants;
import com.fr.stable.StringUtils; import com.fr.stable.StringUtils;
import com.fr.design.utils.gui.GUICoreUtils;
import javax.swing.*; import javax.swing.Action;
import javax.swing.Icon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.ToolTipManager;
import javax.swing.plaf.ButtonUI; import javax.swing.plaf.ButtonUI;
import java.awt.*; import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Insets;
import java.awt.Shape;
import java.awt.Stroke;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; import java.awt.event.ActionListener;
import java.awt.geom.RoundRectangle2D; import java.awt.geom.RoundRectangle2D;
public class UIButton extends JButton implements UIObserver { public class UIButton extends JButton implements UIObserver {
private static final int TOOLTIP_INIT_DELAY = 300; // 延迟 0.3s 显示提示文字
public static final int OTHER_BORDER = 1; public static final int OTHER_BORDER = 1;
public static final int NORMAL_BORDER = 2; public static final int NORMAL_BORDER = 2;
private static final int HEIGH = 20; private static final int HEIGHT = 20;
private boolean isExtraPainted = true; private boolean isExtraPainted = true;
private boolean isRoundBorder = true; private boolean isRoundBorder = true;
private int rectDirection = Constants.NULL; private int rectDirection = Constants.NULL;
@ -36,7 +49,7 @@ public class UIButton extends JButton implements UIObserver {
private CellBorderStyle border = null; private CellBorderStyle border = null;
protected UIObserverListener uiObserverListener; protected UIObserverListener uiObserverListener;
private static final int TOOLTIP_INIT_DELAY = 300; // 延迟 0.3s 显示提示文字 private boolean fixedHeight = true; // 是否将按钮的高度固定为 HEIGHT
public UIButton() { public UIButton() {
this(StringUtils.EMPTY); this(StringUtils.EMPTY);
@ -112,7 +125,7 @@ public class UIButton extends JButton implements UIObserver {
public void set4ToolbarButton() { public void set4ToolbarButton() {
setNormalPainted(false); setNormalPainted(false);
Dimension dim = getPreferredSize(); Dimension dim = getPreferredSize();
dim.height = HEIGH; dim.height = HEIGHT;
setBackground(null); setBackground(null);
setOpaque(false); setOpaque(false);
setSize(dim); setSize(dim);
@ -170,7 +183,11 @@ public class UIButton extends JButton implements UIObserver {
//@Override //@Override
public Dimension getPreferredSize() { public Dimension getPreferredSize() {
return new Dimension(super.getPreferredSize().width, 20); Dimension dim = super.getPreferredSize();
if (isFixedHeight() || dim.height < HEIGHT) {
dim.height = HEIGHT;
}
return dim;
} }
@ -323,7 +340,39 @@ public class UIButton extends JButton implements UIObserver {
this.isBorderPaintedOnlyWhenPressed = value; this.isBorderPaintedOnlyWhenPressed = value;
} }
/** /**
* 到达指定宽度后换行
*/
public void setLineWrap(int width) {
insertPrefixToText("<html><body style='width: " + width + "px'>");
}
/**
* 自动换行
*/
public void setLineWrap() {
insertPrefixToText("<html><body>");
}
private void insertPrefixToText(String prefix) {
String text = this.getText();
if (StringUtils.isEmpty(text)) {
return;
}
this.setText(prefix + text);
// 如果文本过长,且允许换行的话,需要放开按钮高度的限制
this.setFixedHeight(false);
}
private boolean isFixedHeight() {
return fixedHeight;
}
private void setFixedHeight(boolean fixedHeight) {
this.fixedHeight = fixedHeight;
}
/**
* 主函数 * 主函数
* @param args 入口参数 * @param args 入口参数
*/ */

17
designer-base/src/main/java/com/fr/design/gui/ibutton/UIHeadGroup.java

@ -4,8 +4,13 @@ import com.fr.base.BaseUtils;
import com.fr.design.constants.UIConstants; import com.fr.design.constants.UIConstants;
import com.fr.design.utils.gui.GUICoreUtils; import com.fr.design.utils.gui.GUICoreUtils;
import javax.swing.*; import javax.swing.Icon;
import java.awt.*; import javax.swing.JFrame;
import javax.swing.JPanel;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.GridLayout;
import java.awt.event.MouseAdapter; import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent; import java.awt.event.MouseEvent;
import java.awt.event.MouseListener; import java.awt.event.MouseListener;
@ -13,6 +18,7 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
public class UIHeadGroup extends JPanel { public class UIHeadGroup extends JPanel {
private static final int MIN_HEIGHT = 25;
protected List<UIToggleButton> labelButtonList; protected List<UIToggleButton> labelButtonList;
private boolean isNeedLeftRightOutLine = true; private boolean isNeedLeftRightOutLine = true;
protected int selectedIndex = -1; protected int selectedIndex = -1;
@ -25,7 +31,6 @@ public class UIHeadGroup extends JPanel {
labelButtonList = new ArrayList<UIToggleButton>(textArray.length); labelButtonList = new ArrayList<UIToggleButton>(textArray.length);
this.setBackground(UIConstants.TREE_BACKGROUND); this.setBackground(UIConstants.TREE_BACKGROUND);
this.setLayout(new GridLayout(0, textArray.length, 0, 0)); this.setLayout(new GridLayout(0, textArray.length, 0, 0));
// this.setBorder(BorderFactory.createEmptyBorder(1, 1, 1, 1));
for (int i = 0; i < textArray.length; i++) { for (int i = 0; i < textArray.length; i++) {
final int index = i; final int index = i;
String text = textArray[i]; String text = textArray[i];
@ -50,7 +55,6 @@ public class UIHeadGroup extends JPanel {
labelButtonList = new ArrayList<UIToggleButton>(iconArray.length); labelButtonList = new ArrayList<UIToggleButton>(iconArray.length);
this.setBackground(UIConstants.NORMAL_BACKGROUND); this.setBackground(UIConstants.NORMAL_BACKGROUND);
this.setLayout(new GridLayout(0, iconArray.length, 1, 0)); this.setLayout(new GridLayout(0, iconArray.length, 1, 0));
// this.setBorder(BorderFactory.createEmptyBorder(1, 1, 1, 1));
for (int i = 0; i < iconArray.length; i++) { for (int i = 0; i < iconArray.length; i++) {
final int index = i; final int index = i;
Icon icon = iconArray[i]; Icon icon = iconArray[i];
@ -99,7 +103,9 @@ public class UIHeadGroup extends JPanel {
@Override @Override
public Dimension getPreferredSize() { public Dimension getPreferredSize() {
Dimension dim = super.getPreferredSize(); Dimension dim = super.getPreferredSize();
dim.height = 25; if (dim.height < MIN_HEIGHT) {
dim.height = MIN_HEIGHT;
}
return dim; return dim;
} }
@ -133,6 +139,7 @@ public class UIHeadGroup extends JPanel {
labelButton.setRoundBorder(false); labelButton.setRoundBorder(false);
labelButton.setBorderPainted(false); labelButton.setBorderPainted(false);
labelButton.setPressedPainted(false); labelButton.setPressedPainted(false);
labelButton.setLineWrap();
labelButtonList.add(labelButton); labelButtonList.add(labelButton);
this.add(labelButton); this.add(labelButton);
} }

125
designer-realize/src/main/java/com/fr/design/report/WriteShortCutsPane.java

@ -8,13 +8,22 @@ import com.fr.design.gui.ilable.UILabel;
import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.layout.FRGUIPaneFactory;
import com.fr.general.ComparatorUtils; import com.fr.general.ComparatorUtils;
import javax.swing.BorderFactory;
import javax.swing.*; import javax.swing.JPanel;
import javax.swing.SwingConstants;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; import java.awt.event.ActionListener;
public class WriteShortCutsPane extends JPanel{ public class WriteShortCutsPane extends JPanel{
private static final int V_GAP = 20;
private static final int MAX_LABEL_WIDTH = 100;
private String nextColString = "Tab"; private String nextColString = "Tab";
private String nextRowString = "Enter"; private String nextRowString = "Enter";
@ -24,9 +33,8 @@ public class WriteShortCutsPane extends JPanel{
private UILabel preRow; private UILabel preRow;
public WriteShortCutsPane(){ public WriteShortCutsPane(){
this.setLayout(null); this.setLayout(new BorderLayout());
this.add(getFeatureNamePane()); this.add(createContentPane(), BorderLayout.NORTH);
this.add(getHintsPane());
if(!ServerPreferenceConfig.getInstance().isWriteShortCuts()){ if(!ServerPreferenceConfig.getInstance().isWriteShortCuts()){
nextColString = "Enter"; nextColString = "Enter";
@ -35,63 +43,90 @@ public class WriteShortCutsPane extends JPanel{
} }
} }
//todo:布局不要用绝对定位 private JPanel createContentPane() {
public JPanel getFeatureNamePane(){ JPanel contentPane = new JPanel();
JPanel panel1 = FRGUIPaneFactory.createNormalFlowInnerContainer_S_Pane(); contentPane.setBorder(BorderFactory.createEmptyBorder(0, 10, 0, 10));
panel1.setBounds(20, 20, 600, 140);
panel1.setLayout(null); // 纵向布局,横向自适应
panel1.setBorder(BorderFactory.createTitledBorder(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Shortcut_Set"))); contentPane.setLayout(new GridBagLayout());
GridBagConstraints cons = new GridBagConstraints();
cons.fill = GridBagConstraints.HORIZONTAL;
cons.weightx = 1;
cons.gridx = 0;
cons.insets = new Insets(20, 0, 0, 0);
contentPane.add(getFeatureNamePane(), cons);
contentPane.add(getHintsPane(), cons);
return contentPane;
}
private JPanel getFeatureNamePane(){
JPanel featureNamePane = FRGUIPaneFactory.createTitledBorderPane(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Shortcut_Set"));
featureNamePane.setLayout(new BorderLayout());
UILabel name = new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Feature_Name"), SwingConstants.CENTER); UILabel name = new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Feature_Name"), SwingConstants.CENTER);
name.setBounds(40, 30, 80, 50);
UILabel nextCol = new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Cursor_To_Next_Column"), SwingConstants.CENTER); UILabel nextCol = new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Cursor_To_Next_Column"), SwingConstants.CENTER);
nextCol.setBounds(140, 30, 180, 50);
UILabel nextRow = new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Cursor_To_Next_Row"), SwingConstants.CENTER); UILabel nextRow = new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Cursor_To_Next_Row"), SwingConstants.CENTER);
nextRow.setBounds(390, 30, 180, 50);
UILabel shortName = new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Current_Keys"), SwingConstants.CENTER); UILabel shortName = new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Current_Keys"), SwingConstants.CENTER);
shortName.setBounds(40, 80, 80, 50); shortName.setLineWrap(MAX_LABEL_WIDTH);
nextColHK = new UILabel(nextColString, SwingConstants.CENTER); nextColHK = new UILabel(nextColString, SwingConstants.CENTER);
nextColHK.setBounds(140, 80, 180, 50); JPanel switchBtnPane = getSwitchBtnPane();
UIButton switchbt = new UIButton(BaseUtils.readIcon("com/fr/design/images/buttonicon/switchShortCuts.png"));
switchbt.addActionListener(getListener());
switchbt.setToolTipText(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Exchange_Key"));
switchbt.setBounds(337, 90, 36, 29);
nextRowHK = new UILabel(nextRowString, SwingConstants.CENTER); nextRowHK = new UILabel(nextRowString, SwingConstants.CENTER);
nextRowHK.setBounds(390, 80, 180, 50);
panel1.add(name); JPanel centerPane = new JPanel(new GridLayout(2, 4, 0, 0));
panel1.add(nextCol); centerPane.setBorder(BorderFactory.createEmptyBorder(10, 0, 10, 0));
panel1.add(nextRow); centerPane.add(name);
panel1.add(shortName); centerPane.add(nextCol);
panel1.add(nextColHK); centerPane.add(new JPanel());
panel1.add(switchbt); centerPane.add(nextRow);
panel1.add(nextRowHK); centerPane.add(shortName);
centerPane.add(nextColHK);
centerPane.add(switchBtnPane);
centerPane.add(nextRowHK);
featureNamePane.add(centerPane, BorderLayout.CENTER);
return panel1; return featureNamePane;
} }
public JPanel getHintsPane(){ private JPanel getSwitchBtnPane() {
JPanel panel2 =FRGUIPaneFactory.createNormalFlowInnerContainer_S_Pane(); UIButton switchbt = new UIButton(BaseUtils.readIcon("com/fr/design/images/buttonicon/switchShortCuts.png")) {
panel2.setBounds(20, 170, 600, 150); public Dimension getPreferredSize() {
panel2.setLayout(null); return new Dimension(40, 30);
panel2.setBorder(BorderFactory.createTitledBorder(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Tool_Tips"))); }
};
switchbt.addActionListener(getListener());
switchbt.setToolTipText(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Exchange_Key"));
JPanel switchBtnPane = FRGUIPaneFactory.createCenterFlowInnerContainer_S_Pane();
switchBtnPane.add(switchbt);
return switchBtnPane;
}
private JPanel getHintsPane(){
JPanel hintsPane = FRGUIPaneFactory.createTitledBorderPane(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Tool_Tips"));
hintsPane.setLayout(new BorderLayout());
UILabel systemDefault = new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_System_Default"), SwingConstants.CENTER); UILabel systemDefault = new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_System_Default"), SwingConstants.CENTER);
systemDefault.setBounds(38, 30, 84, 50);
UILabel preColText = new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Cursor_To_Previous_Column"), SwingConstants.CENTER); UILabel preColText = new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Cursor_To_Previous_Column"), SwingConstants.CENTER);
preColText.setBounds(140, 30, 190, 50);
UILabel preRowText = new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Cursor_To_Previous_Row"), SwingConstants.CENTER); UILabel preRowText = new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Cursor_To_Previous_Row"), SwingConstants.CENTER);
preRowText.setBounds(140, 80, 190, 50);
preCol = new UILabel("Shift+" + nextColString, SwingConstants.CENTER); preCol = new UILabel("Shift+" + nextColString, SwingConstants.CENTER);
preCol.setBounds(370, 30, 100, 50);
preRow = new UILabel("Shift+" + nextRowString, SwingConstants.CENTER); preRow = new UILabel("Shift+" + nextRowString, SwingConstants.CENTER);
preRow.setBounds(370, 80, 100, 50);
panel2.add(systemDefault); JPanel centerPane = new JPanel(new GridLayout(2, 3, 0, V_GAP));
panel2.add(preColText); centerPane.setBorder(BorderFactory.createEmptyBorder(10, 0, 10, 100));
panel2.add(preRowText);
panel2.add(preCol); centerPane.add(systemDefault);
panel2.add(preRow); centerPane.add(preColText);
centerPane.add(preCol);
centerPane.add(new JPanel());
centerPane.add(preRowText);
centerPane.add(preRow);
hintsPane.add(centerPane, BorderLayout.CENTER);
return panel2; return hintsPane;
} }
public ActionListener getListener(){ public ActionListener getListener(){

Loading…
Cancel
Save