Browse Source

REPORT-2897 9.0设计器修改 ->修改缩放条按钮交互、修改扩展控件之间的间距

REPORT-3986 [9.0一轮回归]将设计器宽度调整到屏幕一半后连续添加10个sheet,设计器最大化后缩放滑块显示异常
master
MoMeak 7 years ago
parent
commit
e60a2c81c6
  1. 11
      designer/src/com/fr/design/mainframe/ReportComponentComposite.java
  2. 6
      designer/src/com/fr/design/mainframe/cell/settingpane/CellExpandAttrPane.java
  3. 7
      designer/src/com/fr/design/mainframe/form/FormReportComponentComposite.java
  4. 375
      designer_base/src/com/fr/design/gui/ibutton/UISliderButton.java
  5. 227
      designer_base/src/com/fr/design/gui/ibutton/UISliderButtonUI.java
  6. 6
      designer_base/src/com/fr/design/gui/style/FormatPane.java
  7. 29
      designer_base/src/com/fr/design/mainframe/JFormSliderPane.java
  8. 30
      designer_base/src/com/fr/design/mainframe/JSliderPane.java
  9. 18
      designer_base/src/com/fr/design/present/dict/FormulaDictPane.java

11
designer/src/com/fr/design/mainframe/ReportComponentComposite.java

@ -204,19 +204,14 @@ public class ReportComponentComposite extends JComponent {
} }
private JComponent createSouthControlPane() { private JComponent createSouthControlPane() {
// hbarContainer = FRGUIPaneFactory.createBorderLayout_S_Pane();
// hbarContainer.add(createSouthControlPaneWithJSliderPane());
hbarContainer = FRGUIPaneFactory.createBorderLayout_S_Pane(); hbarContainer = FRGUIPaneFactory.createBorderLayout_S_Pane();
hbarContainer.add(centerCardPane.editingComponet.getHorizontalScrollBar()); hbarContainer.add(centerCardPane.editingComponet.getHorizontalScrollBar());
// JSplitPane splitpane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, sheetNameTab, hbarContainer);
JPanel southPane = new JPanel(new BorderLayout()); JPanel southPane = new JPanel(new BorderLayout());
jSliderContainer = JSliderPane.getInstance(); jSliderContainer = JSliderPane.getInstance();
JSplitPane splitpane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, sheetNameTab, jSliderContainer);
splitpane.setBorder(null);
splitpane.setDividerSize(3);
splitpane.setResizeWeight(1);
southPane.add(hbarContainer, BorderLayout.NORTH); southPane.add(hbarContainer, BorderLayout.NORTH);
southPane.add(splitpane, BorderLayout.CENTER); southPane.add(sheetNameTab, BorderLayout.CENTER);
southPane.add(jSliderContainer, BorderLayout.EAST);
return southPane; return southPane;
} }

6
designer/src/com/fr/design/mainframe/cell/settingpane/CellExpandAttrPane.java

@ -85,8 +85,8 @@ public class CellExpandAttrPane extends AbstractCellAttrPane {
double f = TableLayout.FILL; double f = TableLayout.FILL;
double p = TableLayout.PREFERRED; double p = TableLayout.PREFERRED;
UILabel direction = new UILabel(Inter.getLocText("FR-Designer_ExpandD_Expand_Direction"), SwingConstants.LEFT); UILabel direction = new UILabel(Inter.getLocText("FR-Designer_ExpandD_Expand_Direction"), SwingConstants.LEFT);
// JPanel directionPane = new JPanel(new BorderLayout()); JPanel directionPane = new JPanel(new BorderLayout());
// directionPane.add(direction, BorderLayout.NORTH); directionPane.add(direction, BorderLayout.NORTH);
UILabel left = new UILabel(Inter.getLocText("FR-Designer_LeftParent"), SwingConstants.LEFT); UILabel left = new UILabel(Inter.getLocText("FR-Designer_LeftParent"), SwingConstants.LEFT);
JPanel leftPane = new JPanel(new BorderLayout()); JPanel leftPane = new JPanel(new BorderLayout());
leftPane.add(left, BorderLayout.NORTH); leftPane.add(left, BorderLayout.NORTH);
@ -95,7 +95,7 @@ public class CellExpandAttrPane extends AbstractCellAttrPane {
upPane.add(up, BorderLayout.NORTH); upPane.add(up, BorderLayout.NORTH);
Component[][] components = new Component[][]{ Component[][] components = new Component[][]{
new Component[]{null, null}, new Component[]{null, null},
new Component[]{direction, expandDirectionButton}, new Component[]{directionPane, expandDirectionButton},
new Component[]{leftPane, leftFatherPane}, new Component[]{leftPane, leftFatherPane},
new Component[]{upPane, rightFatherPane}, new Component[]{upPane, rightFatherPane},
}; };

7
designer/src/com/fr/design/mainframe/form/FormReportComponentComposite.java

@ -169,12 +169,9 @@ public class FormReportComponentComposite extends JComponent implements TargetMo
hbarContainer.add(elementCaseDesigner.getHorizontalScrollBar()); hbarContainer.add(elementCaseDesigner.getHorizontalScrollBar());
jSliderContainer = JSliderPane.getInstance(); jSliderContainer = JSliderPane.getInstance();
JSplitPane splitpane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, sheetNameTab, jSliderContainer);
southPane.add(hbarContainer, BorderLayout.NORTH); southPane.add(hbarContainer, BorderLayout.NORTH);
southPane.add(splitpane, BorderLayout.CENTER); southPane.add(sheetNameTab, BorderLayout.CENTER);
splitpane.setBorder(null); southPane.add(jSliderContainer, BorderLayout.EAST);
splitpane.setDividerSize(3);
splitpane.setResizeWeight(1);
return southPane; return southPane;
} }

375
designer_base/src/com/fr/design/gui/ibutton/UISliderButton.java

@ -0,0 +1,375 @@
package com.fr.design.gui.ibutton;
import com.fr.base.BaseUtils;
import com.fr.base.CellBorderStyle;
import com.fr.base.GraphHelper;
import com.fr.design.constants.UIConstants;
import com.fr.design.event.UIObserver;
import com.fr.design.event.UIObserverListener;
import com.fr.design.utils.gui.GUICoreUtils;
import com.fr.stable.Constants;
import com.fr.stable.StringUtils;
import javax.swing.*;
import javax.swing.plaf.ButtonUI;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.geom.RoundRectangle2D;
public class UISliderButton extends JButton implements UIObserver {
public static final int OTHER_BORDER = 1;
public static final int NORMAL_BORDER = 2;
private static final int HEIGH = 20;
private static final int TOOLTIP_Y = 30;
private boolean isExtraPainted = true;
private boolean isRoundBorder = true;
private int rectDirection = Constants.NULL;
private Stroke borderStroke = UIConstants.BS;
private Color borderColor = UIConstants.LINE_COLOR;
private boolean isPressedPainted = true;
private boolean isNormalPainted = true;
protected boolean isBorderPaintedOnlyWhenPressed = false;
private int borderType = NORMAL_BORDER;
private CellBorderStyle border = null;
protected UIObserverListener uiObserverListener;
public UISliderButton() {
this(StringUtils.EMPTY);
}
public UISliderButton(String string) {
super(string);
init();
}
public UISliderButton(Icon icon) {
super(icon);
init();
}
public UISliderButton(Action action) {
super(action);
init();
}
public UISliderButton(String text, Icon icon) {
super(text, icon);
init();
}
/**
* 是否进行过权限编辑
*
* @param role 角色
* @return
*/
public boolean isDoneAuthorityEdited(String role) {
return false;
}
public UISliderButton(Icon normal, Icon rollOver, Icon pressed) {
super(normal);
setBorderPainted(false);
setRolloverIcon(rollOver);
setPressedIcon(pressed);
setExtraPainted(false);
setBackground(null);
setOpaque(false);
initListener();
}
protected void initListener() {
if (shouldResponseChangeListener()) {
this.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (uiObserverListener == null) {
return;
}
uiObserverListener.doChange();
}
});
}
}
//确定是正常的边框类型,还是其他的Border类型
//若是其他的border类型,则要setOtherType,即设置线型颜色等。若是其他类型,但是没有设置,则默认的是虚线型边框
public void setBorderType(int borderType) {
this.borderType = borderType;
}
public void setBorderStyle(CellBorderStyle border) {
this.border = border;
}
public void set4ToolbarButton() {
setNormalPainted(false);
Dimension dim = getPreferredSize();
dim.height = HEIGH;
setBackground(null);
setOpaque(false);
setSize(dim);
setBorderPaintedOnlyWhenPressed(true);
}
public void set4LargeToolbarButton() {
setNormalPainted(false);
setBackground(null);
setOpaque(false);
setSize(new Dimension(40, 40));
setBorderPaintedOnlyWhenPressed(true);
}
public void set4ChartLargeToolButton() {
setNormalPainted(false);
setBackground(null);
setOpaque(false);
setSize(new Dimension(34, 44));
setBorderPaintedOnlyWhenPressed(true);
}
private void init() {
setOpaque(false);
setBackground(null);
setRolloverEnabled(true);
initListener();
}
@Override
public ButtonUI getUI() {
return new UISliderButtonUI();
}
/**
* 更新界面
*/
public void updateUI() {
setUI(getUI());
}
public CellBorderStyle getBorderStyle() {
return this.border;
}
@Override
public Insets getInsets() {
if (getIcon() != null) {
return new Insets(0, 3, 0, 3);
}
return new Insets(0, 0, 0, 0);
}
//@Override
public Dimension getPreferredSize() {
return new Dimension(super.getPreferredSize().width, 20);
}
public int getBorderType() {
return borderType;
}
public void setOtherBorder(Stroke s, Color c) {
borderStroke = s;
borderColor = c;
}
@Override
protected void paintBorder(Graphics g) {
if (!isBorderPainted()) {
return;
}
if (borderType == OTHER_BORDER) {
paintOtherBorder(g);
} else {
boolean isPress = (isBorderPaintedOnlyWhenPressed && getModel().isPressed());
if (isPress || !isBorderPaintedOnlyWhenPressed) {
if (ui instanceof UISliderButtonUI) {
((UISliderButtonUI) ui).paintBorder(g, this);
} else {
super.paintBorder(g);
}
}
}
}
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
Dimension size = this.getSize();
Graphics2D g2d = (Graphics2D) g;
Stroke oldStroke = g2d.getStroke();
if (border != null) {
g2d.setColor(border.getTopColor());
GraphHelper.drawLine(g2d, 3, 4, size.getWidth() - 4, 4, border.getTopStyle());
g2d.setColor(border.getLeftColor());
GraphHelper.drawLine(g2d, 3, 4, 3, size.getHeight() - 4, border.getLeftStyle());
g2d.setColor(border.getBottomColor());
GraphHelper.drawLine(g2d, 3, size.getHeight() - 4, size.getWidth() - 4, size.getHeight() - 4, border.getBottomStyle());
g2d.setColor(border.getRightColor());
GraphHelper.drawLine(g2d, size.getWidth() - 4, 4, size.getWidth() - 4, size.getHeight() - 4, border.getRightStyle());
} else {
GraphHelper.drawLine(g2d, 2, 4, size.getWidth() - 4, 4, Constants.LINE_NONE);
GraphHelper.drawLine(g2d, 2, 4, 2, size.getHeight() - 4, Constants.LINE_NONE);
GraphHelper.drawLine(g2d, 2, size.getHeight() - 4, size.getWidth() - 4, size.getHeight() - 4, Constants.LINE_NONE);
GraphHelper.drawLine(g2d, size.getWidth() - 4, 4, size.getWidth() - 4, size.getHeight() - 4, Constants.LINE_NONE);
}
g2d.setStroke(oldStroke);
}
protected void paintOtherBorder(Graphics g) {
Graphics2D g2d = (Graphics2D) g;
g2d.setStroke(borderStroke);
Shape shape = new RoundRectangle2D.Float(0.5f, 0.5f, getWidth() - 1, getHeight() - 1, UIConstants.ARC, UIConstants.ARC);
g2d.setColor(borderColor);
g2d.draw(shape);
}
public void setExtraPainted(boolean extra) {
this.isExtraPainted = extra;
}
/**
* 是否额外画
*
* @return 是则返回TRUE
*/
public boolean isExtraPainted() {
return this.isExtraPainted;
}
/**
* @return
*/
public int getRectDirection() {
return rectDirection;
}
/**
* 是否圆边框
*
* @return 是则返回true
*/
public boolean isRoundBorder() {
return isRoundBorder;
}
/**
* @param isRoundBorder
*/
public void setRoundBorder(boolean isRoundBorder) {
setRoundBorder(isRoundBorder, Constants.NULL);
}
/**
* @param isRound
* @param rectDirection
*/
public void setRoundBorder(boolean isRound, int rectDirection) {
this.isRoundBorder = isRound;
this.rectDirection = rectDirection;
}
/**
* 是否按压画
*
* @return 是则返回TRUE
*/
public boolean isPressedPainted() {
return isPressedPainted;
}
/**
* @param isPressedPainted
*/
public void setPressedPainted(boolean isPressedPainted) {
this.isPressedPainted = isPressedPainted;
}
/**
* 是否正常画
*
* @return 是则返回TRUE
*/
public boolean isNormalPainted() {
return isNormalPainted;
}
/**
* @param isNormalPressed
*/
public void setNormalPainted(boolean isNormalPressed) {
this.isNormalPainted = isNormalPressed;
if (!isNormalPressed) {
setBackground(null);
setOpaque(false);
}
}
/**
* @param value
*/
public void setBorderPaintedOnlyWhenPressed(boolean value) {
this.isBorderPaintedOnlyWhenPressed = value;
}
@Override
public Point getToolTipLocation(MouseEvent event) {
return new Point(event.getX(), event.getY() - TOOLTIP_Y);
}
/**
* 主函数
*
* @param args 入口参数
*/
public static void main(String... args) {
JFrame jf = new JFrame("test");
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel content = (JPanel) jf.getContentPane();
content.setLayout(null);
UISliderButton bb = new UISliderButton(BaseUtils.readIcon("/com/fr/design/images/buttonicon/add.png"));
bb.setEnabled(false);
bb.setBorderType(OTHER_BORDER);
// bb.setBounds(20, 20,content.getSize().width, bb.getPreferredSize().height);
bb.setPreferredSize(new Dimension(100, 30));
bb.setBounds(0, 0, bb.getPreferredSize().width, bb.getPreferredSize().height);
content.add(bb);
GUICoreUtils.centerWindow(jf);
jf.setSize(400, 400);
jf.setVisible(true);
}
/**
* 给组件登记一个观察者监听事件
*
* @param listener 观察者监听事件
*/
public void registerChangeListener(UIObserverListener listener) {
this.uiObserverListener = listener;
}
/**
* 组件是否需要响应添加的观察者事件
*
* @return 如果需要响应观察者事件则返回true否则返回false
*/
public boolean shouldResponseChangeListener() {
return true;
}
}

227
designer_base/src/com/fr/design/gui/ibutton/UISliderButtonUI.java

@ -0,0 +1,227 @@
package com.fr.design.gui.ibutton;
import java.awt.*;
import java.awt.geom.RoundRectangle2D;
import javax.swing.AbstractButton;
import javax.swing.ButtonModel;
import javax.swing.Icon;
import javax.swing.JComponent;
import javax.swing.SwingUtilities;
import javax.swing.plaf.basic.BasicButtonUI;
import javax.swing.plaf.basic.BasicHTML;
import javax.swing.text.View;
import com.fr.base.BaseUtils;
import com.fr.design.constants.UIConstants;
import com.fr.design.roleAuthority.ReportAndFSManagePane;
import com.fr.stable.Constants;
import sun.swing.SwingUtilities2;
import com.fr.stable.StringUtils;
import com.fr.design.utils.gui.GUIPaintUtils;
import static com.fr.design.utils.gui.GUIPaintUtils.fillPaint;
public class UISliderButtonUI extends BasicButtonUI {
private Rectangle viewRec = new Rectangle();
private Rectangle textRec = new Rectangle();
private Rectangle iconRec = new Rectangle();
@Override
public void paint(Graphics g, JComponent c) {
UISliderButton b = (UISliderButton) c;
Graphics2D g2d = (Graphics2D) g;
int w = b.getWidth();
int h = b.getHeight();
String text = initRecAndGetText(b, SwingUtilities2.getFontMetrics(b, g), b.getWidth(), b.getHeight());
String selectedRoles = ReportAndFSManagePane.getInstance().getRoleTree().getSelectedRoleName();
clearTextShiftOffset();
((Graphics2D) g).setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
if (b.isExtraPainted()) {
if (isPressed(b) && b.isPressedPainted()) {
fillPressed(g2d, 0, 0, w, h, b.isRoundBorder(), b.getRectDirection(), b.isDoneAuthorityEdited(selectedRoles));
} else if (isRollOver(b)) {
fillRollOver(g2d, 0, 0, w, h, b.isRoundBorder(), b.getRectDirection(), b.isDoneAuthorityEdited(selectedRoles), b.isPressedPainted());
} else if (b.isNormalPainted()) {
fillNormal(g2d, 0, 0, w, h, b.isRoundBorder(), b.getRectDirection(), b.isDoneAuthorityEdited(selectedRoles), b.isPressedPainted());
}
}
((Graphics2D) g).setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_OFF);
paintContent(g, b, text);
}
protected boolean isRollOver(AbstractButton b) {
ButtonModel model = b.getModel();
return model.isRollover() && !b.isSelected();
}
protected boolean isPressed(AbstractButton b) {
ButtonModel model = b.getModel();
return (model.isArmed() && model.isPressed()) || b.isSelected();
}
private void paintContent(Graphics g, AbstractButton b, String text) {
if (b.getIcon() != null) {
paintIcon(g, b);
}
if (!StringUtils.isEmpty(text)) {
paintText(g, b, text);
}
}
private void paintText(Graphics g, AbstractButton b, String text) {
View v = (View) b.getClientProperty(BasicHTML.propertyKey);
if (v != null) {
v.paint(g, textRec);
return;
}
FontMetrics fm = SwingUtilities2.getFontMetrics(b, g);
int mnemonicIndex = b.getDisplayedMnemonicIndex();
if (b.isEnabled()) {
g.setColor(UIConstants.FONT_COLOR);
} else {
g.setColor(UIConstants.LINE_COLOR);
}
SwingUtilities2.drawStringUnderlineCharAt(b, g, text, mnemonicIndex, textRec.x + getTextShiftOffset(), textRec.y + fm.getAscent() + getTextShiftOffset());
}
private String initRecAndGetText(AbstractButton b, FontMetrics fm, int width, int height) {
Insets i = b.getInsets();
viewRec.x = i.left;
viewRec.y = i.top;
viewRec.width = width - (i.right + viewRec.x);
viewRec.height = height - (i.bottom + viewRec.y);
textRec.x = textRec.y = textRec.width = textRec.height = 0;
iconRec.x = iconRec.y = iconRec.width = iconRec.height = 0;
// layout the text and icon
return SwingUtilities.layoutCompoundLabel(
b, fm, b.getText(), b.getIcon(),
b.getVerticalAlignment(), b.getHorizontalAlignment(),
b.getVerticalTextPosition(), b.getHorizontalTextPosition(),
viewRec, iconRec, textRec,
b.getText() == null ? 0 : b.getIconTextGap());
}
protected void paintBorder(Graphics g, UISliderButton b) {
String selectedRoles = ReportAndFSManagePane.getInstance().getRoleTree().getSelectedRoleName();
GUIPaintUtils.drawBorder((Graphics2D) g, 0, 0, b.getWidth(), b.getHeight(), b.isRoundBorder(), b.getRectDirection(), b.isDoneAuthorityEdited(selectedRoles));
}
protected void paintIcon(Graphics g, JComponent c) {
AbstractButton b = (AbstractButton) c;
ButtonModel model = b.getModel();
Icon icon = b.getIcon();
Icon tmpIcon = null;
if (icon == null) {
return;
}
Icon selectedIcon = null;
/* the fallback icon should be based on the selected state */
if (model.isSelected()) {
selectedIcon = (Icon) b.getSelectedIcon();
if (selectedIcon != null) {
icon = selectedIcon;
}
}
if (!model.isEnabled()) {
if (model.isSelected()) {
tmpIcon = (Icon) b.getDisabledSelectedIcon();
if (tmpIcon == null) {
tmpIcon = selectedIcon;
}
}
if (tmpIcon == null) {
tmpIcon = (Icon) b.getDisabledIcon();
}
} else if (model.isPressed() && model.isArmed()) {
tmpIcon = (Icon) b.getPressedIcon();
if (tmpIcon != null) {
// revert back to 0 offset
clearTextShiftOffset();
}
} else if (b.isRolloverEnabled() && model.isRollover()) {
if (model.isSelected()) {
tmpIcon = (Icon) b.getRolloverSelectedIcon();
if (tmpIcon == null) {
tmpIcon = selectedIcon;
}
}
if (tmpIcon == null) {
tmpIcon = (Icon) b.getRolloverIcon();
}
}
if (tmpIcon != null) {
icon = tmpIcon;
}
paintModelIcon(model, icon, g, c);
}
private void paintModelIcon(ButtonModel model, Icon icon, Graphics g, JComponent c) {
if (model.isPressed() && model.isArmed()) {
icon.paintIcon(c, g, iconRec.x + getTextShiftOffset(),
iconRec.y + getTextShiftOffset());
} else {
icon.paintIcon(c, g, iconRec.x, iconRec.y);
}
}
private void fillNormal(Graphics2D g2d, int x, int y, int width, int height, boolean isRound, int rectDirection, boolean isAuthorityEdited, boolean isPressedPainted) {
GradientPaint gp;
if (BaseUtils.isAuthorityEditing() && isAuthorityEdited) {
gp = new GradientPaint(1, 1, UIConstants.AUTHORITY_BLUE, 1, height - 1, UIConstants.AUTHORITY_DARK_BLUE);
} else if (isPressedPainted) {
gp = new GradientPaint(1, 1, UIConstants.SELECT_TAB, 1, height - 1, UIConstants.SELECT_TAB);
}else{
gp = new GradientPaint(1, 1, UIConstants.POP_DIALOG_BORDER, 1, height - 1, UIConstants.POP_DIALOG_BORDER);
}
fillPaint(g2d, x, y, width, height, isRound, rectDirection, gp, UIConstants.ARC);
}
private void fillRollOver(Graphics2D g2d, int x, int y, int width, int height, boolean isRound, int rectDirection, boolean isAuthorityEdited, boolean isPressedPainted) {
GradientPaint gp;
if (BaseUtils.isAuthorityEditing() && isAuthorityEdited) {
gp = new GradientPaint(1, 1, UIConstants.AUTHORITY_BLUE, 1, height - 1, UIConstants.HOVER_BLUE);
} else if (isPressedPainted) {
gp = new GradientPaint(1, 1, UIConstants.POP_DIALOG_BORDER, 1, height - 1, UIConstants.POP_DIALOG_BORDER);
}else {
gp = new GradientPaint(1, 1, UIConstants.POP_DIALOG_BORDER, 1, height - 1, UIConstants.POP_DIALOG_BORDER);
}
fillPaint(g2d, x, y, width, height, isRound, rectDirection, gp, UIConstants.ARC);
}
private void fillPressed(Graphics2D g2d, int x, int y, int width, int height, boolean isRound, int rectDirection, boolean isAuthorityEdited) {
Color oldColor = g2d.getColor();
if (BaseUtils.isAuthorityEditing() && isAuthorityEdited) {
g2d.setColor(UIConstants.AUTHORITY_PRESS_BLUE);
} else {
g2d.setColor(UIConstants.POP_DIALOG_BORDER);
}
Shape oldClip = g2d.getClip();
if (isRound) {
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g2d.clip(new RoundRectangle2D.Double(x, y, width, height, UIConstants.ARC, UIConstants.ARC));
g2d.fillRoundRect(x, y, width, height, UIConstants.ARC, UIConstants.ARC);
g2d.setClip(oldClip);
if (rectDirection == Constants.RIGHT) {
g2d.fillRect(width - 2, y, x + 2, height);
} else if (rectDirection == Constants.LEFT) {
g2d.fillRect(x, y, x + 2, height);
}
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_OFF);
} else {
g2d.clip(new Rectangle(x, y, width, height));
g2d.fillRect(0, 0, width, height);
g2d.setClip(oldClip);
}
g2d.setColor(oldColor);
}
}

6
designer_base/src/com/fr/design/gui/style/FormatPane.java

@ -109,7 +109,7 @@ public class FormatPane extends AbstractBasicStylePane {
JPanel typePane = new JPanel(new BorderLayout()); JPanel typePane = new JPanel(new BorderLayout());
typePane.add(typeComboBox, BorderLayout.CENTER); typePane.add(typeComboBox, BorderLayout.CENTER);
typePane.setBorder(LEFT_BORDER); typePane.setBorder(LEFT_BORDER);
centerPane.setBorder(LEFT_BORDER); // centerPane.setBorder(LEFT_BORDER);
frFontPane.setBorder(LEFT_BORDER); frFontPane.setBorder(LEFT_BORDER);
Component[][] components = getComponent(fontPane, centerPane, typePane); Component[][] components = getComponent(fontPane, centerPane, typePane);
@ -125,7 +125,7 @@ public class FormatPane extends AbstractBasicStylePane {
return new Component[][]{ return new Component[][]{
new Component[]{null, null}, new Component[]{null, null},
new Component[]{new UILabel(Inter.getLocText("FR-Base_Format"), SwingConstants.LEFT), typePane}, new Component[]{new UILabel(Inter.getLocText("FR-Base_Format"), SwingConstants.LEFT), typePane},
new Component[]{null, centerPane}, new Component[]{centerPane, null},
new Component[]{fontPane, frFontPane}, new Component[]{fontPane, frFontPane},
}; };
} }
@ -248,7 +248,7 @@ public class FormatPane extends AbstractBasicStylePane {
this.typeComboBox.setSelectedItem(formatStyle); this.typeComboBox.setSelectedItem(formatStyle);
int i = isArrayContainPattern(FormatField.getInstance().getFormatArray(formatStyle), pattern); int i = isArrayContainPattern(FormatField.getInstance().getFormatArray(formatStyle), pattern);
if (i == -1) { if (i == -1) {
this.textField.setSelectedIndex(0); this.textField.setSelectedItem(pattern);
} else { } else {
this.textField.setSelectedIndex(i); this.textField.setSelectedIndex(i);
} }

29
designer_base/src/com/fr/design/mainframe/JFormSliderPane.java

@ -4,6 +4,7 @@ import com.fr.base.BaseUtils;
import com.fr.design.constants.LayoutConstants; import com.fr.design.constants.LayoutConstants;
import com.fr.design.gui.ibutton.UIButton; import com.fr.design.gui.ibutton.UIButton;
import com.fr.design.gui.ibutton.UIRadioButton; import com.fr.design.gui.ibutton.UIRadioButton;
import com.fr.design.gui.ibutton.UISliderButton;
import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.ilable.UILabel;
import com.fr.design.gui.islider.UISlider; import com.fr.design.gui.islider.UISlider;
import com.fr.design.gui.ispinner.UIBasicSpinner; import com.fr.design.gui.ispinner.UIBasicSpinner;
@ -46,7 +47,7 @@ public class JFormSliderPane extends JPanel {
private static final int SHOWVALBUTTON_WIDTH = 40; private static final int SHOWVALBUTTON_WIDTH = 40;
private static final int SHOWVALBUTTON_HEIGHTH = 20; private static final int SHOWVALBUTTON_HEIGHTH = 20;
private static final int SLIDER_GAP = 5; private static final int SLIDER_GAP = 5;
private static final int TOOLTIP_Y = 25; private static final int TOOLTIP_Y = 30;
private static final Color BACK_COLOR = new Color(245, 245, 247); private static final Color BACK_COLOR = new Color(245, 245, 247);
public int showValue = 100; public int showValue = 100;
public double resolutionTimes = 1.0; public double resolutionTimes = 1.0;
@ -58,7 +59,7 @@ public class JFormSliderPane extends JPanel {
private int sliderValue; private int sliderValue;
private UIButton downButton; private UIButton downButton;
private UIButton upButton; private UIButton upButton;
private JButton showValButton; private UISliderButton showValButton;
private UIRadioButton twoHundredButton; private UIRadioButton twoHundredButton;
private UIRadioButton oneHundredButton; private UIRadioButton oneHundredButton;
private UIRadioButton SevenFiveButton; private UIRadioButton SevenFiveButton;
@ -156,14 +157,7 @@ public class JFormSliderPane extends JPanel {
} }
private void initShowValButton() { private void initShowValButton() {
showValButton = new JButton(showValSpinner.getValue() + "%"){ showValButton = new UISliderButton(showValSpinner.getValue() + "%");
public Point getToolTipLocation(MouseEvent event){
return new Point(event.getX(), event.getY() - TOOLTIP_Y);
}
};
showValButton.setOpaque(false);
showValButton.setMargin(new Insets(0, 0, 0, 0));
showValButton.setFont(new Font("SimSun", Font.PLAIN, 12));
showValButton.setBackground(BACK_COLOR); showValButton.setBackground(BACK_COLOR);
showValButton.setBorderPainted(false); showValButton.setBorderPainted(false);
showValButton.setPreferredSize(new Dimension(SHOWVALBUTTON_WIDTH, SHOWVALBUTTON_HEIGHTH)); showValButton.setPreferredSize(new Dimension(SHOWVALBUTTON_WIDTH, SHOWVALBUTTON_HEIGHTH));
@ -185,8 +179,17 @@ public class JFormSliderPane extends JPanel {
SevenFiveButton.addItemListener(radioButtonItemListener); SevenFiveButton.addItemListener(radioButtonItemListener);
fiveTenButton.addItemListener(radioButtonItemListener); fiveTenButton.addItemListener(radioButtonItemListener);
twoFiveButton.addItemListener(radioButtonItemListener); twoFiveButton.addItemListener(radioButtonItemListener);
//TODO customButton.addItemListener(new ItemListener() {
// selfAdaptButton.addItemListener(); @Override
public void itemStateChanged(ItemEvent e) {
JRadioButton temp = (JRadioButton) e.getSource();
if (temp.isSelected()) {
JFormattedTextField textField = ((JSpinner.NumberEditor) showValSpinner.getEditor()).getTextField();
textField.requestFocus();
textField.selectAll();
}
}
});
ButtonGroup bg = new ButtonGroup();// 初始化按钮组 ButtonGroup bg = new ButtonGroup();// 初始化按钮组
bg.add(twoHundredButton);// 加入按钮组 bg.add(twoHundredButton);// 加入按钮组
@ -267,6 +270,8 @@ public class JFormSliderPane extends JPanel {
} }
refreshSlider(val); refreshSlider(val);
refreshBottun(val); refreshBottun(val);
JFormattedTextField textField = ((JSpinner.NumberEditor) showValSpinner.getEditor()).getTextField();
textField.setCaretPosition(showValSpinner.getValue().toString().length());
} }
}; };

30
designer_base/src/com/fr/design/mainframe/JSliderPane.java

@ -4,6 +4,7 @@ import com.fr.base.BaseUtils;
import com.fr.design.constants.LayoutConstants; import com.fr.design.constants.LayoutConstants;
import com.fr.design.gui.ibutton.UIButton; import com.fr.design.gui.ibutton.UIButton;
import com.fr.design.gui.ibutton.UIRadioButton; import com.fr.design.gui.ibutton.UIRadioButton;
import com.fr.design.gui.ibutton.UISliderButton;
import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.ilable.UILabel;
import com.fr.design.gui.islider.UISlider; import com.fr.design.gui.islider.UISlider;
import com.fr.design.gui.ispinner.UIBasicSpinner; import com.fr.design.gui.ispinner.UIBasicSpinner;
@ -17,6 +18,7 @@ import javax.swing.*;
import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener; import javax.swing.event.ChangeListener;
import javax.swing.plaf.basic.BasicSliderUI; import javax.swing.plaf.basic.BasicSliderUI;
import javax.swing.text.BadLocationException;
import javax.swing.text.DefaultFormatterFactory; import javax.swing.text.DefaultFormatterFactory;
import javax.swing.text.NumberFormatter; import javax.swing.text.NumberFormatter;
import java.awt.*; import java.awt.*;
@ -47,7 +49,7 @@ public class JSliderPane extends JPanel {
private static final int SHOWVALBUTTON_WIDTH = 40; private static final int SHOWVALBUTTON_WIDTH = 40;
private static final int SHOWVALBUTTON_HEIGHTH = 20; private static final int SHOWVALBUTTON_HEIGHTH = 20;
private static final int SLIDER_GAP = 5; private static final int SLIDER_GAP = 5;
private static final int TOOLTIP_Y = 25; private static final int TOOLTIP_Y = 30;
private static final Color BACK_COLOR = new Color(245, 245, 247); private static final Color BACK_COLOR = new Color(245, 245, 247);
public int showValue = 100; public int showValue = 100;
@ -60,7 +62,7 @@ public class JSliderPane extends JPanel {
private int sliderValue; private int sliderValue;
private UIButton downButton; private UIButton downButton;
private UIButton upButton; private UIButton upButton;
private JButton showValButton; private UISliderButton showValButton;
private UIRadioButton twoHundredButton; private UIRadioButton twoHundredButton;
private UIRadioButton oneHundredButton; private UIRadioButton oneHundredButton;
private UIRadioButton SevenFiveButton; private UIRadioButton SevenFiveButton;
@ -159,14 +161,7 @@ public class JSliderPane extends JPanel {
} }
private void initShowValButton() { private void initShowValButton() {
showValButton = new JButton(showValSpinner.getValue() + "%") { showValButton = new UISliderButton(showValSpinner.getValue() + "%");
public Point getToolTipLocation(MouseEvent event) {
return new Point(event.getX(), event.getY() - TOOLTIP_Y);
}
};
showValButton.setOpaque(false);
showValButton.setMargin(new Insets(0, 0, 0, 0));
showValButton.setFont(new Font("SimSun", Font.PLAIN, 12));
showValButton.setBackground(BACK_COLOR); showValButton.setBackground(BACK_COLOR);
showValButton.setBorderPainted(false); showValButton.setBorderPainted(false);
showValButton.setPreferredSize(new Dimension(SHOWVALBUTTON_WIDTH, SHOWVALBUTTON_HEIGHTH)); showValButton.setPreferredSize(new Dimension(SHOWVALBUTTON_WIDTH, SHOWVALBUTTON_HEIGHTH));
@ -189,8 +184,17 @@ public class JSliderPane extends JPanel {
SevenFiveButton.addItemListener(radioButtonItemListener); SevenFiveButton.addItemListener(radioButtonItemListener);
fiveTenButton.addItemListener(radioButtonItemListener); fiveTenButton.addItemListener(radioButtonItemListener);
twoFiveButton.addItemListener(radioButtonItemListener); twoFiveButton.addItemListener(radioButtonItemListener);
//TODO customButton.addItemListener(new ItemListener() {
// selfAdaptButton.addItemListener(); @Override
public void itemStateChanged(ItemEvent e) {
JRadioButton temp = (JRadioButton) e.getSource();
if (temp.isSelected()) {
JFormattedTextField textField = ((JSpinner.NumberEditor) showValSpinner.getEditor()).getTextField();
textField.requestFocus();
textField.selectAll();
}
}
});
ButtonGroup bg = new ButtonGroup();// 初始化按钮组 ButtonGroup bg = new ButtonGroup();// 初始化按钮组
bg.add(twoHundredButton);// 加入按钮组 bg.add(twoHundredButton);// 加入按钮组
@ -272,6 +276,8 @@ public class JSliderPane extends JPanel {
} }
refreshSlider(val); refreshSlider(val);
refreshBottun(val); refreshBottun(val);
JFormattedTextField textField = ((JSpinner.NumberEditor) showValSpinner.getEditor()).getTextField();
textField.setCaretPosition(showValSpinner.getValue().toString().length());
} }
}; };

18
designer_base/src/com/fr/design/present/dict/FormulaDictPane.java

@ -29,14 +29,14 @@ public class FormulaDictPane extends FurtherBasicBeanPane<FormulaDictionary> {
} }
public static void main(String[] args) { public static void main(String[] args) {
JFrame jf = new JFrame("test"); // JFrame jf = new JFrame("test");
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel content = (JPanel) jf.getContentPane(); // JPanel content = (JPanel) jf.getContentPane();
content.setLayout(new BorderLayout()); // content.setLayout(new BorderLayout());
content.add(new FormulaDictPane(), BorderLayout.NORTH); // content.add(new FormulaDictPane(), BorderLayout.NORTH);
GUICoreUtils.centerWindow(jf); // GUICoreUtils.centerWindow(jf);
jf.setSize(250, 400); // jf.setSize(250, 400);
jf.setVisible(true); // jf.setVisible(true);
} }
private void initComponents() { private void initComponents() {
@ -59,7 +59,7 @@ public class FormulaDictPane extends FurtherBasicBeanPane<FormulaDictionary> {
int[][] rowCount = {{1, 1}, {1, 1}, {1, 1}}; int[][] rowCount = {{1, 1}, {1, 1}, {1, 1}};
UILabel tag = new UILabel(Inter.getLocText("Formula_Dictionary_Display_Examples_Html")); UILabel tag = new UILabel(Inter.getLocText("Formula_Dictionary_Display_Examples_Html"));
tag.setPreferredSize(new Dimension(225, 40)); tag.setPreferredSize(new Dimension(225, 80));
JPanel t = new JPanel(new BorderLayout()); JPanel t = new JPanel(new BorderLayout());
t.add(tag, BorderLayout.CENTER); t.add(tag, BorderLayout.CENTER);

Loading…
Cancel
Save