Browse Source

REPORT-107973 主页及组件视觉样式翻新

【问题原因】rt
【改动思路】翻新:数字步进、搜索框、BaseAccessibleEditor、popupTool面板,部分文本框组件高度
newui
Leo.Qin 12 months ago
parent
commit
7f06b5cfe3
  1. 80
      designer-base/src/main/java/com/fine/theme/light/ui/FineInputUI.java
  2. 12
      designer-base/src/main/java/com/fine/theme/light/ui/FineLightIconSet.java
  3. 2
      designer-base/src/main/java/com/fine/theme/light/ui/FineRoundBorder.java
  4. 125
      designer-base/src/main/java/com/fr/design/data/datapane/management/search/pane/FineSearchPane.java
  5. 84
      designer-base/src/main/java/com/fr/design/data/datapane/management/search/pane/TreeSearchToolbarPane.java
  6. 127
      designer-base/src/main/java/com/fr/design/gui/ispinner/UISpinner.java
  7. 10
      designer-base/src/main/java/com/fr/design/gui/itextarea/UITextArea.java
  8. 7
      designer-base/src/main/java/com/fr/design/gui/itextfield/UINumberField.java
  9. 41
      designer-base/src/main/java/com/fr/design/gui/itextfield/UITextField.java
  10. 89
      designer-base/src/main/java/com/fr/design/mainframe/EastRegionContainerPane.java
  11. 120
      designer-base/src/main/java/com/fr/design/mainframe/widget/accessibles/BaseAccessibleEditor.java
  12. 26
      designer-base/src/main/java/com/fr/design/mainframe/widget/editors/DataBindingEditor.java
  13. 3
      designer-base/src/main/java/com/fr/design/notification/ui/NotificationCenterPane.java
  14. 5
      designer-base/src/main/resources/com/fine/theme/icon/dot.svg
  15. 8
      designer-base/src/main/resources/com/fine/theme/icon/notification/notification_dot.svg
  16. 7
      designer-base/src/main/resources/com/fine/theme/icon/popup/collapse_popup.svg
  17. 5
      designer-base/src/main/resources/com/fine/theme/icon/popup/expand_popup.svg
  18. 4
      designer-base/src/main/resources/com/fine/theme/icon/up_arrow.svg
  19. 8
      designer-base/src/main/resources/com/fine/theme/light/ui/laf/FineLightLaf.properties
  20. 2
      designer-form/src/main/java/com/fr/design/parameter/RootDesignDefinePane.java
  21. 14
      designer-form/src/main/java/com/fr/design/widget/ui/designer/component/FormWidgetValuePane.java
  22. 16
      designer-realize/src/main/java/com/fr/design/mainframe/cell/settingpane/CellOtherSetPane.java
  23. 10
      designer-realize/src/main/java/com/fr/quickeditor/cellquick/CellFormulaQuickEditor.java

80
designer-base/src/main/java/com/fine/theme/light/ui/FineInputUI.java

@ -0,0 +1,80 @@
package com.fine.theme.light.ui;
import com.formdev.flatlaf.ui.FlatButtonUI;
import com.formdev.flatlaf.ui.FlatPanelUI;
import javax.swing.AbstractButton;
import javax.swing.JComponent;
import javax.swing.JPanel;
import javax.swing.UIManager;
import javax.swing.plaf.ComponentUI;
/**
* Input输入框 UI类
*
* @author Leo.Qin
* @since 11.0
* Created on 2023/12/11
*/
public class FineInputUI extends FlatPanelUI {
public FineInputUI(boolean shared) {
super(shared);
}
/**
* 创建UI
*/
public static ComponentUI createUI(JComponent c) {
return new FineInputUI(false);
}
@Override
public void installUI(JComponent c) {
super.installUI(c);
c.setBackground(UIManager.getColor("Input.background"));
c.setBorder(UIManager.getBorder("Input.border"));
}
@Override
protected void installDefaults(JPanel p) {
super.installDefaults(p);
arc = UIManager.getInt("Input.arc");
}
/**
* input输入框中的Button UI类
*
* @author Leo.Qin
* @since 11.0
* Created on 2023/12/12
*/
public static class FineInputButtonUI extends FlatButtonUI {
public FineInputButtonUI(boolean shared) {
super(shared);
}
/**
* 创建UI
*/
public static ComponentUI createUI(JComponent c) {
return new FineInputButtonUI(false);
}
@Override
public void installUI(JComponent c) {
super.installUI(c);
c.setBorder(null);
c.setOpaque(false);
}
@Override
protected void installDefaults(AbstractButton b) {
super.installDefaults(b);
hoverBackground = UIManager.getColor("InputButton.hoverBackground");
pressedBackground = UIManager.getColor("InputButton.pressedBackground");
background = UIManager.getColor("InputButton.background");
}
}
}

12
designer-base/src/main/java/com/fine/theme/light/ui/FineLightIconSet.java

@ -35,10 +35,12 @@ public class FineLightIconSet extends AbstractIconSet {
new SvgIconSource("drag_left", "com/fine/theme/icon/drag_left.svg", true), new SvgIconSource("drag_left", "com/fine/theme/icon/drag_left.svg", true),
new SvgIconSource("drag_right", "com/fine/theme/icon/drag_right.svg", true), new SvgIconSource("drag_right", "com/fine/theme/icon/drag_right.svg", true),
new SvgIconSource("down_arrow", "com/fine/theme/icon/down_arrow.svg", true), new SvgIconSource("down_arrow", "com/fine/theme/icon/down_arrow.svg", true),
new SvgIconSource("down_arrow_12", "com/fine/theme/icon/down_arrow.svg", true, 12),
new SvgIconSource("up_arrow_12", "com/fine/theme/icon/up_arrow.svg", true, 12),
// 数据集相关Icon // 数据集相关Icon
new SvgIconSource("database", "com/fine/theme/icon/dataset/database.svg", true), new SvgIconSource("database", "com/fine/theme/icon/dataset/database.svg", true),
new SvgIconSource("preview", "com/fine/theme/icon/dataset/preview.svg", false), new SvgIconSource("preview", "com/fine/theme/icon/dataset/preview.svg", true),
new SvgIconSource("connection", "com/fine/theme/icon/dataset/connection.svg", true), new SvgIconSource("connection", "com/fine/theme/icon/dataset/connection.svg", true),
new SvgIconSource("class_table_data", "com/fine/theme/icon/dataset/class_table_data.svg", true), new SvgIconSource("class_table_data", "com/fine/theme/icon/dataset/class_table_data.svg", true),
new SvgIconSource("data_table", "com/fine/theme/icon/dataset/data_table.svg", true), new SvgIconSource("data_table", "com/fine/theme/icon/dataset/data_table.svg", true),
@ -155,6 +157,8 @@ public class FineLightIconSet extends AbstractIconSet {
// 北区菜单栏 // 北区菜单栏
new SvgIconSource("notification", "com/fine/theme/icon/notification/notification.svg"), new SvgIconSource("notification", "com/fine/theme/icon/notification/notification.svg"),
new SvgIconSource("notification_dot.svg", "com/fine/theme/icon/notification/notification_dot.svg"),
// 三角 // 三角
new SvgIconSource("triangle_down", "com/fine/theme/icon/triangle/triangle_down.svg"), new SvgIconSource("triangle_down", "com/fine/theme/icon/triangle/triangle_down.svg"),
@ -166,7 +170,11 @@ public class FineLightIconSet extends AbstractIconSet {
// 滚动条 // 滚动条
new SvgIconSource("zoomIn", "com/fine/theme/icon/zoom/zoomIn.svg", true), new SvgIconSource("zoomIn", "com/fine/theme/icon/zoom/zoomIn.svg", true),
new SvgIconSource("zoomOut", "com/fine/theme/icon/zoom/zoomOut.svg", true) new SvgIconSource("zoomOut", "com/fine/theme/icon/zoom/zoomOut.svg", true),
new SvgIconSource("dot", "com/fine/theme/icon/dot.svg"),
new SvgIconSource("expand_popup", "com/fine/theme/icon/popup/expand_popup.svg"),
new SvgIconSource("collapse_popup", "com/fine/theme/icon/popup/collapse_popup.svg")
); );
} }
} }

2
designer-base/src/main/java/com/fine/theme/light/ui/FineRoundBorder.java

@ -27,8 +27,6 @@ public class FineRoundBorder extends FlatRoundBorder {
protected Color highlightBorderColor = UIManager.getColor("defaultHighlightBorderColor"); protected Color highlightBorderColor = UIManager.getColor("defaultHighlightBorderColor");
@Styleable(dot = true) @Styleable(dot = true)
protected Color focusColor = UIManager.getColor("defaultBorderFocusShadow"); protected Color focusColor = UIManager.getColor("defaultBorderFocusShadow");
@Styleable(dot = true)
protected int focusWidth = UIManager.getInt("defaultBorderFocusWidth");
@Override @Override
protected Paint getBorderColor(Component c) { protected Paint getBorderColor(Component c) {

125
designer-base/src/main/java/com/fr/design/data/datapane/management/search/pane/FineSearchPane.java

@ -0,0 +1,125 @@
package com.fr.design.data.datapane.management.search.pane;
import com.fine.theme.icon.LazyIcon;
import com.fine.theme.light.ui.FineInputUI;
import com.fr.design.event.HoverAware;
import com.fr.design.gui.ibutton.UIButton;
import com.fr.design.gui.ilable.UILabel;
import com.fr.design.gui.itextfield.UITextField;
import javax.swing.BorderFactory;
import javax.swing.JPanel;
import javax.swing.UIManager;
import javax.swing.event.DocumentListener;
import java.awt.BorderLayout;
import java.awt.Insets;
import java.awt.event.ActionListener;
import java.awt.event.KeyListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
/**
* 搜索面板
*
* @author Leo.Qin
* @since 11.0
* Created on 2023/12/13
*/
public class FineSearchPane extends JPanel implements HoverAware {
private static final Insets LABEL_INSETS = UIManager.getInsets("SearchPanel.labelBorderInsets");
private static final Insets BUTTON_INSETS = UIManager.getInsets("SearchPanel.buttonBorderInsets");
private UITextField searchTextField;
private UIButton clearButton;
private boolean hover;
public FineSearchPane() {
this.setLayout(new BorderLayout());
this.setUI(new FineInputUI(false));
initComponents();
}
private void initComponents() {
// 左侧搜索图标
UILabel searchLabel = new UILabel(new LazyIcon("search"));
searchLabel.setBorder(BorderFactory.createEmptyBorder(LABEL_INSETS.top, LABEL_INSETS.left, LABEL_INSETS.bottom, LABEL_INSETS.right));
// 中间输入框
searchTextField = new UITextField();
searchTextField.setBorder(null);
searchTextField.setOpaque(false);
searchTextField.addMouseListener(new MouseAdapter() {
@Override
public void mouseEntered(MouseEvent e) {
hover = true;
repaint();
}
@Override
public void mouseExited(MouseEvent e) {
hover = false;
repaint();
}
});
// 右侧返回图标
clearButton = new UIButton(new LazyIcon("clear"));
clearButton.setUI(new FineInputUI.FineInputButtonUI(false));
clearButton.setBorder(BorderFactory.createEmptyBorder(BUTTON_INSETS.top, BUTTON_INSETS.left, BUTTON_INSETS.bottom, BUTTON_INSETS.right));
this.add(searchLabel, BorderLayout.WEST);
this.add(searchTextField, BorderLayout.CENTER);
this.add(clearButton, BorderLayout.EAST);
}
@Override
public boolean isHovered() {
return hover;
}
/**
* 添加KeyListener
*
* @param listener the key listener.
*/
public void addKeyListener(KeyListener listener) {
searchTextField.addKeyListener(listener);
}
public void setPlaceholder(String placeHolder) {
searchTextField.setPlaceholder(placeHolder);
}
public void setClearToolTipText(String text) {
clearButton.setToolTipText(text);
}
/**
* 添加DocumentListener
*
* @param listener
*/
public void addDocumentListener(DocumentListener listener) {
searchTextField.getDocument().addDocumentListener(listener);
}
/**
* 按钮添加监听器
*
* @param listener
*/
public void addClearActionListener(ActionListener listener) {
clearButton.addActionListener(listener);
}
public String getText() {
return searchTextField.getText();
}
public void setText(String text) {
searchTextField.setText(text);
}
}

84
designer-base/src/main/java/com/fr/design/data/datapane/management/search/pane/TreeSearchToolbarPane.java

@ -1,12 +1,8 @@
package com.fr.design.data.datapane.management.search.pane; package com.fr.design.data.datapane.management.search.pane;
import com.fine.theme.icon.LazyIcon;
import com.fr.design.DesignModelAdapter; import com.fr.design.DesignModelAdapter;
import com.fr.design.constants.UIConstants;
import com.fr.design.data.datapane.TableDataTreePane; import com.fr.design.data.datapane.TableDataTreePane;
import com.fr.design.data.datapane.management.search.TableDataTreeSearchManager; import com.fr.design.data.datapane.management.search.TableDataTreeSearchManager;
import com.fr.design.gui.ilable.UILabel;
import com.fr.design.gui.itextfield.UITextField;
import com.fr.design.gui.itoolbar.UIToolbar; import com.fr.design.gui.itoolbar.UIToolbar;
import com.fr.design.i18n.Toolkit; import com.fr.design.i18n.Toolkit;
import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.layout.FRGUIPaneFactory;
@ -17,19 +13,15 @@ import com.fr.stable.StringUtils;
import javax.swing.BorderFactory; import javax.swing.BorderFactory;
import javax.swing.JPanel; import javax.swing.JPanel;
import javax.swing.UIManager;
import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener; import javax.swing.event.DocumentListener;
import java.awt.BorderLayout; import java.awt.BorderLayout;
import java.awt.CardLayout; import java.awt.CardLayout;
import java.awt.Color;
import java.awt.Dimension; import java.awt.Dimension;
import java.awt.Insets; import java.awt.Insets;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import java.awt.event.KeyAdapter; import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent; import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
/** /**
* @author Yvan * @author Yvan
@ -40,6 +32,8 @@ public class TreeSearchToolbarPane extends JPanel implements TreeSearchStatusCha
public static final String SEARCH_PANE = "searchPane"; public static final String SEARCH_PANE = "searchPane";
private static final Insets INSETS = UIManager.getInsets("TreeSearchToolbarPane.borderInsets");
/** /**
* 工具栏 * 工具栏
*/ */
@ -53,13 +47,7 @@ public class TreeSearchToolbarPane extends JPanel implements TreeSearchStatusCha
/** /**
* 搜索面板 * 搜索面板
*/ */
private JPanel searchPane; private FineSearchPane searchPane;
/**
* 搜索输入框
*/
private UITextField searchTextField;
/** /**
* 内容面板 * 内容面板
*/ */
@ -74,7 +62,7 @@ public class TreeSearchToolbarPane extends JPanel implements TreeSearchStatusCha
@Override @Override
public void keyPressed(KeyEvent e) { public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_ENTER) { if (e.getKeyCode() == KeyEvent.VK_ENTER) {
TableDataTreeSearchManager.getInstance().startSearch(searchTextField.getText()); TableDataTreeSearchManager.getInstance().startSearch(searchPane.getText());
} }
} }
}; };
@ -93,47 +81,17 @@ public class TreeSearchToolbarPane extends JPanel implements TreeSearchStatusCha
private void initContentPane() { private void initContentPane() {
cardLayout = new CardLayout(); cardLayout = new CardLayout();
contentPane = new JPanel(cardLayout); contentPane = new JPanel(cardLayout);
contentPane.setBorder(BorderFactory.createEmptyBorder(INSETS.top, INSETS.left, INSETS.bottom, INSETS.right));
contentPane.add(searchPane, SEARCH_PANE); contentPane.add(searchPane, SEARCH_PANE);
contentPane.add(toolbarPane, TOOLBAR_PANE); contentPane.add(toolbarPane, TOOLBAR_PANE);
cardLayout.show(contentPane, TOOLBAR_PANE); cardLayout.show(contentPane, TOOLBAR_PANE);
} }
private void initSearchPane() { private void initSearchPane() {
searchPane = new JPanel(FRGUIPaneFactory.createBorderLayout()); searchPane = new FineSearchPane();
searchPane.setBorder(BorderFactory.createLineBorder(UIConstants.TOOLBAR_BORDER_COLOR));
searchPane.setBackground(Color.WHITE);
// 左侧搜索图标
UILabel searchLabel = new UILabel(new LazyIcon("search"));
searchLabel.setBorder(BorderFactory.createEmptyBorder(0, 12, 0, 0));
searchLabel.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
// do nothing
}
});
// 中间输入框 // 中间输入框
searchTextField = new UITextField(){ searchPane.setPlaceholder(Toolkit.i18nText("Fine-Design_Tree_Search_Press_Enter_For_Search"));
@Override searchPane.addDocumentListener(new DocumentListener() {
public Insets getInsets() {
return new Insets(2, 4, 0, 4);
}
};
searchTextField.setBorderPainted(false);
searchTextField.setPlaceholder(Toolkit.i18nText("Fine-Design_Tree_Search_Press_Enter_For_Search"));
searchTextField.addFocusListener(new FocusListener() {
@Override
public void focusGained(FocusEvent e) {
searchPane.setBorder(BorderFactory.createLineBorder(UIConstants.NORMAL_BLUE));
searchPane.repaint();
}
@Override
public void focusLost(FocusEvent e) {
searchPane.setBorder(BorderFactory.createLineBorder(UIConstants.TOOLBAR_BORDER_COLOR));
searchPane.repaint();
}
});
this.searchTextField.getDocument().addDocumentListener(new DocumentListener() {
@Override @Override
public void insertUpdate(DocumentEvent e) { public void insertUpdate(DocumentEvent e) {
} }
@ -147,25 +105,15 @@ public class TreeSearchToolbarPane extends JPanel implements TreeSearchStatusCha
public void changedUpdate(DocumentEvent e) { public void changedUpdate(DocumentEvent e) {
} }
}); });
this.searchTextField.addKeyListener(enterPressed); searchPane.addKeyListener(enterPressed);
// 右侧返回图标 searchPane.setClearToolTipText(Toolkit.i18nText("Fine-Design_Tree_Search_Return"));
UILabel returnLabel = new UILabel(new LazyIcon("clear")); searchPane.addClearActionListener(e -> TableDataTreeSearchManager.getInstance().outOfSearchMode());
returnLabel.setToolTipText(Toolkit.i18nText("Fine-Design_Tree_Search_Return"));
returnLabel.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 11));
returnLabel.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
TableDataTreeSearchManager.getInstance().outOfSearchMode();
} }
});
searchPane.add(searchLabel, BorderLayout.WEST);
searchPane.add(searchTextField, BorderLayout.CENTER);
searchPane.add(returnLabel, BorderLayout.EAST);
}
private void dealWithTextChange() { private void dealWithTextChange() {
if (StringUtils.isEmpty(searchTextField.getText()) && TableDataTreeSearchManager.getInstance().isInSearchMode()) { if (StringUtils.isEmpty(searchPane.getText()) && TableDataTreeSearchManager.getInstance().isInSearchMode()) {
// 如果是搜索模式下,看作是用户删除输入框文字,仅复原TableDataTreePane // 如果是搜索模式下,看作是用户删除输入框文字,仅复原TableDataTreePane
TableDataTreeSearchManager.getInstance().restoreTreePane(); TableDataTreeSearchManager.getInstance().restoreTreePane();
TableDataTreePane.getInstance(DesignModelAdapter.getCurrentModelAdapter()).refreshDockingView(); TableDataTreePane.getInstance(DesignModelAdapter.getCurrentModelAdapter()).refreshDockingView();
@ -186,7 +134,7 @@ public class TreeSearchToolbarPane extends JPanel implements TreeSearchStatusCha
} }
public void setPlaceHolder(String placeHolder) { public void setPlaceHolder(String placeHolder) {
this.searchTextField.setPlaceholder(placeHolder); searchPane.setPlaceholder(placeHolder);
} }
/** /**
@ -198,7 +146,7 @@ public class TreeSearchToolbarPane extends JPanel implements TreeSearchStatusCha
public void updateTreeSearchChange(TreeSearchStatusChangeEvent event) { public void updateTreeSearchChange(TreeSearchStatusChangeEvent event) {
TreeSearchStatus treeSearchStatus = event.getTreeSearchStatus(); TreeSearchStatus treeSearchStatus = event.getTreeSearchStatus();
if (treeSearchStatus == TreeSearchStatus.NOT_IN_SEARCH_MODE) { if (treeSearchStatus == TreeSearchStatus.NOT_IN_SEARCH_MODE) {
this.searchTextField.setText(StringUtils.EMPTY); searchPane.setText(StringUtils.EMPTY);
switchPane(TOOLBAR_PANE); switchPane(TOOLBAR_PANE);
} else { } else {
switchPane(SEARCH_PANE); switchPane(SEARCH_PANE);

127
designer-base/src/main/java/com/fr/design/gui/ispinner/UISpinner.java

@ -1,48 +1,52 @@
package com.fr.design.gui.ispinner; package com.fr.design.gui.ispinner;
import com.fr.design.constants.UIConstants; import com.fine.theme.icon.LazyIcon;
import com.fine.theme.light.ui.FineInputUI;
import com.fr.design.event.GlobalNameListener; import com.fr.design.event.GlobalNameListener;
import com.fr.design.event.GlobalNameObserver; import com.fr.design.event.GlobalNameObserver;
import com.fr.design.event.HoverAware;
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.gui.ibutton.UIButton; import com.fr.design.gui.ibutton.UIButton;
import com.fr.design.gui.ibutton.UIButtonUI;
import com.fr.design.gui.itextfield.UINumberField; import com.fr.design.gui.itextfield.UINumberField;
import com.fr.design.utils.gui.GUIPaintUtils;
import com.fr.stable.CommonUtils; import com.fr.stable.CommonUtils;
import com.fr.stable.Constants;
import com.fr.stable.StringUtils; import com.fr.stable.StringUtils;
import javax.swing.ButtonModel; import javax.swing.BorderFactory;
import javax.swing.Icon; import javax.swing.Icon;
import javax.swing.JComponent;
import javax.swing.JPanel; import javax.swing.JPanel;
import javax.swing.UIManager;
import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener; import javax.swing.event.ChangeListener;
import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener; import javax.swing.event.DocumentListener;
import javax.swing.plaf.ButtonUI;
import java.awt.BorderLayout; import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension; import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.GridLayout; 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;
import java.awt.event.FocusAdapter; import java.awt.event.FocusAdapter;
import java.awt.event.FocusEvent; import java.awt.event.FocusEvent;
import java.awt.event.FocusListener; import java.awt.event.FocusListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseWheelEvent; import java.awt.event.MouseWheelEvent;
import java.awt.event.MouseWheelListener; import java.awt.event.MouseWheelListener;
public class UISpinner extends JPanel implements UIObserver, GlobalNameObserver { /**
* Spinner类
*
* @author anonymous
* @Created on 2023/12/12
* @since 11.0
*/
public class UISpinner extends JPanel implements UIObserver, GlobalNameObserver, HoverAware {
protected double value; protected double value;
private static final int SIZE = 20; private static final int BUTTON_WIDTH = UIManager.getInt("InputButton.width");
private static final int LEN = 13; private static final int BUTTON_HEIGHT = UIManager.getInt("InputButton.height");
private static final int WIDTH = 13; private static final int HEIGHT = UIManager.getInt("Input.height");
private static final int HEIGHT = 10;
private static final int DEFAULT_NUMBERFIELD_COLUMNS = 2; private static final int DEFAULT_NUMBERFIELD_COLUMNS = 2;
private UINumberField textField; private UINumberField textField;
private UIButton preButton; private UIButton preButton;
@ -60,6 +64,8 @@ public class UISpinner extends JPanel implements UIObserver, GlobalNameObserver
private int numberFieldColumns; private int numberFieldColumns;
private boolean textFieldFocus = false; private boolean textFieldFocus = false;
private boolean hover;
public UISpinner() { public UISpinner() {
} }
@ -85,6 +91,7 @@ public class UISpinner extends JPanel implements UIObserver, GlobalNameObserver
this.dierta = dierta; this.dierta = dierta;
initComponents(); initComponents();
iniListener(); iniListener();
setUI(FineInputUI.createUI(this));
} }
private void iniListener() { private void iniListener() {
@ -99,6 +106,21 @@ public class UISpinner extends JPanel implements UIObserver, GlobalNameObserver
} }
}); });
} }
textField.addMouseListener(new MouseAdapter() {
@Override
public void mouseEntered(MouseEvent e) {
hover = true;
repaint();
}
@Override
public void mouseExited(MouseEvent e) {
hover = false;
repaint();
}
});
} }
/** /**
@ -210,7 +232,7 @@ public class UISpinner extends JPanel implements UIObserver, GlobalNameObserver
@Override @Override
public Dimension getPreferredSize() { public Dimension getPreferredSize() {
Dimension dim = super.getPreferredSize(); Dimension dim = super.getPreferredSize();
dim.height = SIZE; dim.height = HEIGHT;
return dim; return dim;
} }
@ -243,33 +265,9 @@ public class UISpinner extends JPanel implements UIObserver, GlobalNameObserver
} }
} }
private class ButtionUI extends UIButtonUI {
private boolean isNormalPaint = true;
@Override
protected void doExtraPainting(UIButton b, Graphics2D g2d, int w, int h, String selectedRoles) {
if (isPressed(b) && b.isPressedPainted()) {
isNormalPaint = false;
Color pressColor = UIConstants.COMBOBOX_BTN_PRESS;
GUIPaintUtils.fillPressed(g2d, 0, 0, w, h, b.isRoundBorder(), b.getRectDirection(), b.isDoneAuthorityEdited(selectedRoles), pressColor);
} else if (isRollOver(b)) {
isNormalPaint = false;
Color hoverColor = UIConstants.COMBOBOX_BTN_ROLLOVER;
GUIPaintUtils.fillRollOver(g2d, 0, 0, w, h, b.isRoundBorder(), b.getRectDirection(), b.isDoneAuthorityEdited(selectedRoles), b.isPressedPainted(), hoverColor);
} else if (b.isNormalPainted()) {
isNormalPaint = true;
GUIPaintUtils.fillNormal(g2d, 0, 0, w, h, b.isRoundBorder(), b.getRectDirection(), b.isDoneAuthorityEdited(selectedRoles), b.isPressedPainted());
}
}
@Override @Override
protected void paintModelIcon(ButtonModel model, Icon icon, Graphics g, JComponent c) { public boolean isHovered() {
if (isNormalPaint) { return hover;
g.setColor(UIConstants.COMBOBOX_BTN_NORMAL);
g.fillRect(0, 0, c.getWidth(), c.getHeight());
}
super.paintModelIcon(model, icon, g, c);
}
} }
private void initComponents() { private void initComponents() {
@ -277,41 +275,30 @@ public class UISpinner extends JPanel implements UIObserver, GlobalNameObserver
textField.setMaxValue(maxValue); textField.setMaxValue(maxValue);
textField.setMinValue(minValue); textField.setMinValue(minValue);
setValue(value); setValue(value);
preButton = new UIButton(UIConstants.ARROW_UP_ICON) { preButton = createArrowButton(new LazyIcon("up_arrow_12"));
public boolean shouldResponseChangeListener() { nextButton = createArrowButton(new LazyIcon("down_arrow_12"));
return false;
}
@Override
public ButtonUI getUI() {
return new ButtionUI();
}
};
preButton.setRoundBorder(true, Constants.LEFT);
nextButton = new UIButton(UIConstants.ARROW_DOWN_ICON) {
public boolean shouldResponseChangeListener() {
return false;
}
@Override
public ButtonUI getUI() {
return new ButtionUI();
}
};
nextButton.setRoundBorder(true, Constants.LEFT);
setLayout(new BorderLayout()); setLayout(new BorderLayout());
add(textField, BorderLayout.CENTER); add(textField, BorderLayout.CENTER);
JPanel arrowPane = new JPanel(); JPanel arrowPane = new JPanel();
arrowPane.setPreferredSize(new Dimension(LEN, SIZE));
arrowPane.setLayout(new GridLayout(2, 1)); arrowPane.setLayout(new GridLayout(2, 1));
preButton.setBounds(0, 1, WIDTH, HEIGHT);
nextButton.setBounds(0, HEIGHT, WIDTH, HEIGHT);
arrowPane.add(preButton); arrowPane.add(preButton);
arrowPane.add(nextButton); arrowPane.add(nextButton);
arrowPane.setOpaque(false);
arrowPane.setPreferredSize(new Dimension(BUTTON_WIDTH, BUTTON_HEIGHT));
add(arrowPane, BorderLayout.EAST); add(arrowPane, BorderLayout.EAST);
componentInitListeners(); componentInitListeners();
} }
private UIButton createArrowButton(Icon icon) {
UIButton arrowButton = new UIButton(icon) {
public boolean shouldResponseChangeListener() {
return false;
}
};
arrowButton.setUI(new FineInputUI.FineInputButtonUI(false));
return arrowButton;
}
/** /**
* 设置最大值 * 设置最大值
* @param maxValue 最大值 * @param maxValue 最大值
@ -377,11 +364,15 @@ public class UISpinner extends JPanel implements UIObserver, GlobalNameObserver
protected UINumberField initNumberField() { protected UINumberField initNumberField() {
int columns = this.numberFieldColumns == 0 ? DEFAULT_NUMBERFIELD_COLUMNS : this.numberFieldColumns; int columns = this.numberFieldColumns == 0 ? DEFAULT_NUMBERFIELD_COLUMNS : this.numberFieldColumns;
return new UINumberField(columns) { UINumberField numberField = new UINumberField(columns) {
public boolean shouldResponseChangeListener() { public boolean shouldResponseChangeListener() {
return false; return false;
} }
}; };
Insets insets = UIManager.getInsets("InputTextField.borderInsets");
numberField.setBorder(BorderFactory.createEmptyBorder(insets.top, insets.left, insets.bottom, insets.right));
numberField.setOpaque(false);
return numberField;
} }
private DocumentListener docListener = new DocumentListener() { private DocumentListener docListener = new DocumentListener() {

10
designer-base/src/main/java/com/fr/design/gui/itextarea/UITextArea.java

@ -48,7 +48,6 @@ public class UITextArea extends JTextArea implements UIObserver, HoverAware {
private void initComponents() { private void initComponents() {
setLineWrap(true); setLineWrap(true);
setWrapStyleWord(true); setWrapStyleWord(true);
setMinimumSize(new Dimension(getMinimumSize().width, HEIGHT));
initListener(); initListener();
} }
@ -121,4 +120,13 @@ public class UITextArea extends JTextArea implements UIObserver, HoverAware {
public boolean isHovered() { public boolean isHovered() {
return hover; return hover;
} }
@Override
public Dimension getPreferredSize() {
Dimension size = super.getPreferredSize();
if (size.height < HEIGHT) {
return new Dimension(size.width, HEIGHT);
}
return size;
}
} }

7
designer-base/src/main/java/com/fr/design/gui/itextfield/UINumberField.java

@ -4,10 +4,10 @@ import com.fr.base.Utils;
import com.fr.general.ComparatorUtils; import com.fr.general.ComparatorUtils;
import com.fr.stable.CoreConstants; import com.fr.stable.CoreConstants;
import com.fr.stable.StringUtils; import com.fr.stable.StringUtils;
import javax.swing.text.AttributeSet; import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException; import javax.swing.text.BadLocationException;
import javax.swing.text.PlainDocument; import javax.swing.text.PlainDocument;
import java.awt.Dimension;
import java.awt.Toolkit; import java.awt.Toolkit;
/** /**
@ -151,11 +151,6 @@ public class UINumberField extends UITextField {
this.isContentChanged = isContentChanged; this.isContentChanged = isContentChanged;
} }
@Override
public Dimension getPreferredSize() {
return new Dimension(super.getPreferredSize().width, 20);
}
class NumberDocument extends PlainDocument { class NumberDocument extends PlainDocument {
public boolean checkString(int offset, String s, String str) { public boolean checkString(int offset, String s, String str) {

41
designer-base/src/main/java/com/fr/design/gui/itextfield/UITextField.java

@ -40,7 +40,7 @@ public class UITextField extends JTextField implements UIObserver, GlobalNameObs
private GlobalNameListener globalNameListener = null; private GlobalNameListener globalNameListener = null;
private Dimension preferredSize = null; private Dimension preferredSize = null;
private String placeholder = StringUtils.EMPTY; private String placeholder = StringUtils.EMPTY;
private final int HEIGHT = UIManager.getInt("TextField.height"); private final int HEIGHT = UIManager.getInt("Input.height");
//有些情况下setText的时候不希望触发attributeChange,添加一个属性标识 //有些情况下setText的时候不希望触发attributeChange,添加一个属性标识
private boolean isSetting = false; private boolean isSetting = false;
@ -77,10 +77,28 @@ public class UITextField extends JTextField implements UIObserver, GlobalNameObs
*/ */
public void init() { public void init() {
InputEventBaseOnOS.addBasicEditInputMap(this); InputEventBaseOnOS.addBasicEditInputMap(this);
setPreferredSize(new Dimension(getPreferredSize().width, HEIGHT)); initCommonListeners();
initListener(); initListener();
} }
private void initCommonListeners() {
if (shouldResponseChangeListener()) {
this.addMouseListener(new MouseAdapter() {
@Override
public void mouseEntered(MouseEvent e) {
hover = true;
repaint();
}
@Override
public void mouseExited(MouseEvent e) {
hover = false;
repaint();
}
});
}
}
protected void initListener() { protected void initListener() {
if (shouldResponseChangeListener()) { if (shouldResponseChangeListener()) {
getDocument().addDocumentListener(new DocumentListener() { getDocument().addDocumentListener(new DocumentListener() {
@ -99,20 +117,6 @@ public class UITextField extends JTextField implements UIObserver, GlobalNameObs
attributeChange(); attributeChange();
} }
}); });
this.addMouseListener(new MouseAdapter() {
@Override
public void mouseEntered(MouseEvent e) {
hover = true;
repaint();
}
@Override
public void mouseExited(MouseEvent e) {
hover = false;
repaint();
}
});
} }
} }
@ -236,4 +240,9 @@ public class UITextField extends JTextField implements UIObserver, GlobalNameObs
public boolean isHovered() { public boolean isHovered() {
return hover; return hover;
} }
@Override
public Dimension getPreferredSize() {
return new Dimension(super.getPreferredSize().width, HEIGHT);
}
} }

89
designer-base/src/main/java/com/fr/design/mainframe/EastRegionContainerPane.java

@ -12,6 +12,7 @@ import com.fr.design.constants.UIConstants;
import com.fr.design.file.HistoryTemplateListCache; import com.fr.design.file.HistoryTemplateListCache;
import com.fr.design.fun.PropertyItemPaneProvider; import com.fr.design.fun.PropertyItemPaneProvider;
import com.fr.design.gui.ibutton.UIButton; import com.fr.design.gui.ibutton.UIButton;
import com.fr.design.gui.ibutton.UIButtonUI;
import com.fr.design.gui.icontainer.UIEastResizableContainer; import com.fr.design.gui.icontainer.UIEastResizableContainer;
import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.ilable.UILabel;
import com.fr.design.layout.VerticalFlowLayout; import com.fr.design.layout.VerticalFlowLayout;
@ -20,8 +21,6 @@ import com.fr.design.mainframe.share.collect.ComponentCollector;
import com.fr.design.notification.SnapChat; import com.fr.design.notification.SnapChat;
import com.fr.design.notification.SnapChatFactory; import com.fr.design.notification.SnapChatFactory;
import com.fr.design.ui.util.UIUtil; import com.fr.design.ui.util.UIUtil;
import com.fr.design.utils.DesignUtils;
import com.fr.design.utils.SvgDrawUtils;
import com.fr.design.utils.gui.GUICoreUtils; import com.fr.design.utils.gui.GUICoreUtils;
import com.fr.log.FineLoggerFactory; import com.fr.log.FineLoggerFactory;
import com.fr.plugin.context.PluginContext; import com.fr.plugin.context.PluginContext;
@ -53,7 +52,6 @@ import java.awt.Cursor;
import java.awt.Dimension; import java.awt.Dimension;
import java.awt.Graphics; import java.awt.Graphics;
import java.awt.GraphicsEnvironment; import java.awt.GraphicsEnvironment;
import java.awt.Image;
import java.awt.Insets; import java.awt.Insets;
import java.awt.Point; import java.awt.Point;
import java.awt.Rectangle; import java.awt.Rectangle;
@ -83,7 +81,7 @@ public class EastRegionContainerPane extends UIEastResizableContainer {
private static final int TAB_BUTTON_WIDTH = 40; private static final int TAB_BUTTON_WIDTH = 40;
private static final int TAB_BUTTON_HEIGHT = 40; private static final int TAB_BUTTON_HEIGHT = 40;
private static final int CONTENT_WIDTH = CONTAINER_WIDTH - TAB_WIDTH; private static final int CONTENT_WIDTH = CONTAINER_WIDTH - TAB_WIDTH;
private static final int POPUP_TOOLPANE_HEIGHT = 40; private static final int POPUP_TOOLPANE_HEIGHT = UIManager.getInt("PopupToolPane.height");
private static final int ARROW_RANGE_START = CONTENT_WIDTH - 30; private static final int ARROW_RANGE_START = CONTENT_WIDTH - 30;
// 弹出对话框高度 // 弹出对话框高度
private static final int POPUP_MIN_HEIGHT = 145; private static final int POPUP_MIN_HEIGHT = 145;
@ -1172,6 +1170,7 @@ public class EastRegionContainerPane extends UIEastResizableContainer {
// 弹出属性面板的工具条 // 弹出属性面板的工具条
private class PopupToolPane extends JPanel { private class PopupToolPane extends JPanel {
private final UIButton popupButton;
private String title; private String title;
private PropertyItem propertyItem; private PropertyItem propertyItem;
private String buttonType; private String buttonType;
@ -1189,29 +1188,13 @@ public class EastRegionContainerPane extends UIEastResizableContainer {
private static final String UP_BUTTON = "UpButton"; private static final String UP_BUTTON = "UpButton";
private static final String DOWN_BUTTON = "DownButton"; private static final String DOWN_BUTTON = "DownButton";
private MouseListener mouseListener = new MouseAdapter() { private final Insets INSETS = UIManager.getInsets("PopupToolPane.borderInsets");
@Override
public void mouseExited(MouseEvent e) {
setCursor(Cursor.getDefaultCursor());
if (mouseDownCompCoords == null) {
// contentPane.setBackground(originColor);
}
repaint();
}
@Override private MouseListener mouseListener = new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
if (e.getX() >= ARROW_RANGE_START) {
onPop();
}
}
@Override @Override
public void mouseReleased(MouseEvent e) { public void mouseReleased(MouseEvent e) {
mouseDownCompCoords = null; mouseDownCompCoords = null;
if (!getBounds().contains(e.getPoint())) {
// contentPane.setBackground(originColor);
}
} }
@Override @Override
@ -1229,7 +1212,6 @@ public class EastRegionContainerPane extends UIEastResizableContainer {
setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
} else if (isMovable) { } else if (isMovable) {
setCursor(Cursor.getPredefinedCursor(Cursor.MOVE_CURSOR)); setCursor(Cursor.getPredefinedCursor(Cursor.MOVE_CURSOR));
// contentPane.setBackground(UIConstants.POPUP_TITLE_BACKGROUND);
} else { } else {
setCursor(Cursor.getDefaultCursor()); setCursor(Cursor.getDefaultCursor());
} }
@ -1273,18 +1255,41 @@ public class EastRegionContainerPane extends UIEastResizableContainer {
this.propertyItem = propertyItem; this.propertyItem = propertyItem;
this.title = propertyItem.getTitle(); this.title = propertyItem.getTitle();
originColor = UIConstants.UI_TOOLBAR_COLOR; originColor = UIConstants.UI_TOOLBAR_COLOR;
this.buttonType = buttonType;
this.setForeground(UIManager.getColor("DarkenedFontColor")); this.setForeground(UIManager.getColor("DarkenedFontColor"));
contentPane = new JPanel(); contentPane = new JPanel();
contentPane.setLayout(new BorderLayout()); contentPane.setLayout(new BorderLayout());
UILabel label = new UILabel(title); UILabel label = new UILabel(title);
contentPane.add(label, BorderLayout.WEST); contentPane.add(label, BorderLayout.CENTER);
contentPane.setBorder(new EmptyBorder(5, 10, 5, 0)); popupButton = createPopupButton(buttonType);
contentPane.add(popupButton, BorderLayout.EAST);
contentPane.setBorder(new EmptyBorder(INSETS.top, INSETS.left, INSETS.bottom, INSETS.right));
setLayout(new BorderLayout()); setLayout(new BorderLayout());
add(contentPane, BorderLayout.CENTER); add(contentPane, BorderLayout.CENTER);
setBorder(BorderFactory.createMatteBorder(0, 0, 1, 0, UIManager.getColor("East.border"))); }
initToolButton(buttonType);
private UIButton createPopupButton(String type) {
UIButton popupButton = new UIButton();
if (type.equals(UP_BUTTON)) {
popupButton = new UIButton(new LazyIcon("collapse_popup"));
} else if (type.equals(DOWN_BUTTON)) {
popupButton = new UIButton(new LazyIcon("expand_popup"));
}
popupButton.setUI(new UIButtonUI());
popupButton.setBorderPainted(false);
popupButton.setBorder(null);
popupButton.setBackground(null);
popupButton.setExtraPainted(false);
popupButton.addActionListener(e -> {
this.buttonType = type;
onPop();
});
addMouseMotionListener(mouseMotionListener);
addMouseListener(mouseListener);
return popupButton;
} }
public void setParentDialog(JDialog parentDialog) { public void setParentDialog(JDialog parentDialog) {
@ -1292,19 +1297,6 @@ public class EastRegionContainerPane extends UIEastResizableContainer {
isMovable = true; isMovable = true;
} }
private void initToolButton(final String buttonType) {
this.buttonType = buttonType;
if (StringUtils.isEmpty(buttonType) || buttonType.equals(NO_BUTTON)) {
return;
}
// validate
if (!buttonType.equals(UP_BUTTON) && !buttonType.equals(DOWN_BUTTON)) {
throw new IllegalArgumentException("unknown button type: " + buttonType);
}
addMouseMotionListener(mouseMotionListener);
addMouseListener(mouseListener);
}
// 触发弹入、弹出 // 触发弹入、弹出
private void onPop() { private void onPop() {
if (buttonType.equals(DOWN_BUTTON)) { if (buttonType.equals(DOWN_BUTTON)) {
@ -1318,23 +1310,6 @@ public class EastRegionContainerPane extends UIEastResizableContainer {
public Dimension getPreferredSize() { public Dimension getPreferredSize() {
return new Dimension(super.getPreferredSize().width, POPUP_TOOLPANE_HEIGHT); return new Dimension(super.getPreferredSize().width, POPUP_TOOLPANE_HEIGHT);
} }
@Override
public void paint(Graphics g) {
super.paint(g);
Image button;
g.setColor(new Color(69, 135, 255));
g.setFont(DesignUtils.getDefaultGUIFont().applySize(14));
if (buttonType.equals(NO_BUTTON)) {
return;
}
if (buttonType.equals(DOWN_BUTTON)) {
button = UIConstants.POP_BUTTON_DOWN;
} else {
button = UIConstants.POP_BUTTON_UP;
}
SvgDrawUtils.doDrawSVG(g, () -> SvgDrawUtils.drawImage(g, button, (ARROW_RANGE_START + 8), 4, null));
}
} }
private class PopupDialog extends JDialog { private class PopupDialog extends JDialog {

120
designer-base/src/main/java/com/fr/design/mainframe/widget/accessibles/BaseAccessibleEditor.java

@ -1,39 +1,42 @@
package com.fr.design.mainframe.widget.accessibles; package com.fr.design.mainframe.widget.accessibles;
import com.fine.theme.icon.LazyIcon;
import com.fine.theme.light.ui.FineInputUI;
import com.fr.design.Exception.ValidationException;
import com.fr.design.designer.properties.Decoder;
import com.fr.design.designer.properties.Encoder;
import com.fr.design.dialog.BasicPane;
import com.fr.design.dialog.FineJOptionPane;
import com.fr.design.event.HoverAware;
import com.fr.design.event.UIObserverListener;
import com.fr.design.gui.ibutton.UIButton;
import com.fr.design.layout.FRGUIPaneFactory;
import com.fr.design.mainframe.widget.editors.ITextComponent;
import com.fr.design.mainframe.widget.editors.TextField;
import javax.swing.BorderFactory;
import javax.swing.JComponent;
import javax.swing.JOptionPane;
import javax.swing.UIManager;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import java.awt.BorderLayout; import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component; import java.awt.Component;
import java.awt.Dimension; import java.awt.Dimension;
import java.awt.Graphics2D;
import java.awt.Insets; import java.awt.Insets;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.ArrayList; import java.util.ArrayList;
import javax.swing.*;
import com.fr.design.constants.UIConstants;
import com.fr.design.dialog.FineJOptionPane;
import com.fr.design.event.UIObserverListener;
import com.fr.design.gui.ibutton.UIButton;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import javax.swing.plaf.ButtonUI;
import com.fr.base.BaseUtils;
import com.fr.design.Exception.ValidationException;
import com.fr.design.gui.ibutton.UIButtonUI;
import com.fr.design.layout.FRGUIPaneFactory;
import com.fr.design.mainframe.widget.editors.ITextComponent;
import com.fr.design.mainframe.widget.editors.TextField;
import com.fr.design.dialog.BasicPane;
import com.fr.design.designer.properties.Decoder;
import com.fr.design.designer.properties.Encoder;
import com.fr.design.utils.gui.GUIPaintUtils;
/** /**
* 编辑器
* @aauthor
* @created on 2023/12/13
* @since 6.5.3 * @since 6.5.3
*/ */
public class BaseAccessibleEditor extends BasicPane implements AccessibleEditor { public class BaseAccessibleEditor extends BasicPane implements AccessibleEditor, HoverAware {
private ArrayList<ChangeListener> listeners; private ArrayList<ChangeListener> listeners;
private boolean showButton; private boolean showButton;
@ -41,6 +44,10 @@ public class BaseAccessibleEditor extends BasicPane implements AccessibleEditor
private Decoder decoder; private Decoder decoder;
private UIButton btPopup; private UIButton btPopup;
protected ITextComponent txtValue; protected ITextComponent txtValue;
private boolean hover;
private static final int HEIGHT = UIManager.getInt("Input.height");
private static final int BUTTON_WIDTH = UIManager.getInt("InputButton.width");
private static final int BUTTON_HEIGHT = UIManager.getInt("InputButton.height");
public BaseAccessibleEditor(Encoder enc, Decoder dec, boolean showBtn) { public BaseAccessibleEditor(Encoder enc, Decoder dec, boolean showBtn) {
listeners = new ArrayList<ChangeListener>(); listeners = new ArrayList<ChangeListener>();
@ -48,10 +55,30 @@ public class BaseAccessibleEditor extends BasicPane implements AccessibleEditor
this.encoder = enc; this.encoder = enc;
this.decoder = dec; this.decoder = dec;
initComponents(); initComponents();
initListener();
txtValue.setEditable(dec != null); txtValue.setEditable(dec != null);
((JComponent) txtValue).setOpaque(true); ((JComponent) txtValue).setOpaque(false);
((JComponent) txtValue).setBorder(BorderFactory.createLineBorder(Color.lightGray)); Insets insets = UIManager.getInsets("InputTextField.borderInsets");
((JComponent) txtValue).setBackground(Color.WHITE); ((JComponent) txtValue).setBorder(BorderFactory.createEmptyBorder(insets.top, insets.left, insets.bottom, insets.right));
this.setUI(FineInputUI.createUI(this));
setPreferredSize(new Dimension(getPreferredSize().width, HEIGHT));
}
private void initListener() {
((TextField) txtValue).addMouseListener(new MouseAdapter() {
@Override
public void mouseEntered(MouseEvent e) {
hover = true;
repaint();
}
@Override
public void mouseExited(MouseEvent e) {
hover = false;
repaint();
}
});
} }
@Override @Override
@ -77,7 +104,6 @@ public class BaseAccessibleEditor extends BasicPane implements AccessibleEditor
} }
private void initComponents() { private void initComponents() {
setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 1));
txtValue = createTextField(); txtValue = createTextField();
setLayout(FRGUIPaneFactory.createBorderLayout()); setLayout(FRGUIPaneFactory.createBorderLayout());
@ -88,33 +114,13 @@ public class BaseAccessibleEditor extends BasicPane implements AccessibleEditor
txtValueActionPerformed(evt); txtValueActionPerformed(evt);
} }
}); });
add((JComponent) txtValue, BorderLayout.CENTER); add((JComponent) txtValue, BorderLayout.CENTER);
setOpaque(false);
if (showButton) { if (showButton) {
btPopup = new UIButton(){ btPopup = new UIButton();
@Override
public ButtonUI getUI() {
return new UIButtonUI() {
@Override
protected boolean isPressed(AbstractButton b) {
return model.isArmed() && model.isPressed();
}
@Override
protected void doExtraPainting(UIButton b, Graphics2D g2d, int w, int h, String selectedRoles) {
if (isPressed(b) && b.isPressedPainted()) {
GUIPaintUtils.fillPressed(g2d, 0, 0, w, h, b.isRoundBorder(), b.getRectDirection(), b.isDoneAuthorityEdited(selectedRoles), UIConstants.COMBOBOX_BTN_PRESS);
} else if (isRollOver(b)) {
GUIPaintUtils.fillRollOver(g2d, 0, 0, w, h, b.isRoundBorder(), b.getRectDirection(), b.isDoneAuthorityEdited(selectedRoles), b.isPressedPainted(), UIConstants.COMBOBOX_BTN_ROLLOVER);
} else if (b.isNormalPainted()) {
GUIPaintUtils.fillNormal(g2d, 0, 0, w, h, b.isRoundBorder(), b.getRectDirection(), b.isDoneAuthorityEdited(selectedRoles), b.isPressedPainted(), UIConstants.COMBOBOX_BTN_NORMAL);
}
}
};
}
};
initPopupButton(); initPopupButton();
btPopup.setUI(new FineInputUI.FineInputButtonUI(false));
btPopup.addActionListener(new ActionListener() { btPopup.addActionListener(new ActionListener() {
@Override @Override
@ -137,19 +143,15 @@ public class BaseAccessibleEditor extends BasicPane implements AccessibleEditor
protected void initPopupButton() { protected void initPopupButton() {
if (!isComboButton()) { if (!isComboButton()) {
btPopup.setIcon(new ImageIcon(UIConstants.ACCESSIBLE_EDITOR_DOT)); btPopup.setIcon(new LazyIcon("dot"));
btPopup.setPreferredSize(new Dimension(20, 20));
} else { } else {
btPopup.setRolloverEnabled(true); btPopup.setRolloverEnabled(true);
btPopup.setFocusPainted(false); btPopup.setFocusPainted(false);
btPopup.setPreferredSize(new Dimension(15, 19));
btPopup.setBorderPainted(false); btPopup.setBorderPainted(false);
btPopup.setContentAreaFilled(false); btPopup.setContentAreaFilled(false);
btPopup.setMargin(new Insets(0, 0, 0, 0)); btPopup.setIcon(new LazyIcon("down_arrow"));
btPopup.setIcon(BaseUtils.readIcon("/com/fr/design/images/form/designer/drop_up.png"));
btPopup.setPressedIcon(BaseUtils.readIcon("/com/fr/design/images/form/designer/drop_down.png"));
btPopup.setRolloverIcon(BaseUtils.readIcon("/com/fr/design/images/form/designer/drop_over.png"));
} }
btPopup.setPreferredSize(new Dimension(BUTTON_WIDTH, BUTTON_HEIGHT));
} }
// 有的编辑器是使用下拉框来直接选择的,这时候就把按钮显示成下拉框 // 有的编辑器是使用下拉框来直接选择的,这时候就把按钮显示成下拉框
@ -227,4 +229,8 @@ public class BaseAccessibleEditor extends BasicPane implements AccessibleEditor
} }
@Override
public boolean isHovered() {
return hover;
}
} }

26
designer-base/src/main/java/com/fr/design/mainframe/widget/editors/DataBindingEditor.java

@ -1,5 +1,16 @@
package com.fr.design.mainframe.widget.editors; package com.fr.design.mainframe.widget.editors;
import com.fr.data.TableDataSource;
import com.fr.design.data.DesignTableDataManager;
import com.fr.design.data.datapane.TableDataComboBox;
import com.fr.design.editor.editor.Editor;
import com.fr.design.gui.icombobox.LazyComboBox;
import com.fr.design.gui.icombobox.UIComboBoxRenderer;
import com.fr.form.data.DataBinding;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.UIManager;
import java.awt.BorderLayout; import java.awt.BorderLayout;
import java.awt.Component; import java.awt.Component;
import java.awt.Dimension; import java.awt.Dimension;
@ -8,16 +19,6 @@ import java.awt.event.ItemListener;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import javax.swing.*;
import com.fr.design.data.DesignTableDataManager;
import com.fr.data.TableDataSource;
import com.fr.design.data.datapane.TableDataComboBox;
import com.fr.design.gui.icombobox.UIComboBoxRenderer;
import com.fr.design.gui.icombobox.LazyComboBox;
import com.fr.design.editor.editor.Editor;
import com.fr.form.data.DataBinding;
/** /**
* DataBindingEditor * DataBindingEditor
@ -26,8 +27,9 @@ import com.fr.form.data.DataBinding;
* @since 2012-3-29下午5:26:28 * @since 2012-3-29下午5:26:28
*/ */
public class DataBindingEditor extends Editor<DataBinding> { public class DataBindingEditor extends Editor<DataBinding> {
private final static int HORI_GAP = 1; private final static int HORI_GAP = UIManager.getInt("DataBindingEditor.hgap");
private final static int VER_GAP = 7; private final static int VER_GAP = UIManager.getInt("DataBindingEditor.vgap");
protected TableDataComboBox tableDataComboBox; protected TableDataComboBox tableDataComboBox;
protected LazyComboBox columnNameComboBox; protected LazyComboBox columnNameComboBox;

3
designer-base/src/main/java/com/fr/design/notification/ui/NotificationCenterPane.java

@ -1,7 +1,6 @@
package com.fr.design.notification.ui; package com.fr.design.notification.ui;
import com.fine.theme.icon.LazyIcon; import com.fine.theme.icon.LazyIcon;
import com.fr.base.svg.IconUtils;
import com.fr.design.dialog.BasicPane; import com.fr.design.dialog.BasicPane;
import com.fr.design.gui.ibutton.UIButton; import com.fr.design.gui.ibutton.UIButton;
import com.fr.design.i18n.Toolkit; import com.fr.design.i18n.Toolkit;
@ -41,7 +40,7 @@ public class NotificationCenterPane extends BasicPane {
public void refreshButton() { public void refreshButton() {
if (NotificationCenter.getInstance().getNotificationsCount() > 0) { if (NotificationCenter.getInstance().getNotificationsCount() > 0) {
notificationCenterButton.setIcon(IconUtils.readIcon("/com/fr/design/standard/notification/notification_dot.svg")); notificationCenterButton.setIcon(new LazyIcon("notification_dot"));
} else { } else {
notificationCenterButton.setIcon(new LazyIcon("notification")); notificationCenterButton.setIcon(new LazyIcon("notification"));
} }

5
designer-base/src/main/resources/com/fine/theme/icon/dot.svg

@ -0,0 +1,5 @@
<svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd"
d="M10.6998 16.7C10.6998 17.6389 9.93869 18.4 8.9998 18.4C8.06092 18.4 7.2998 17.6389 7.2998 16.7C7.2998 15.7611 8.06092 15 8.9998 15C9.93869 15 10.6998 15.7611 10.6998 16.7ZM17.6998 16.7C17.6998 17.6389 16.9387 18.4 15.9998 18.4C15.0609 18.4 14.2998 17.6389 14.2998 16.7C14.2998 15.7611 15.0609 15 15.9998 15C16.9387 15 17.6998 15.7611 17.6998 16.7ZM22.9998 18.4C23.9387 18.4 24.6998 17.6389 24.6998 16.7C24.6998 15.7611 23.9387 15 22.9998 15C22.0609 15 21.2998 15.7611 21.2998 16.7C21.2998 17.6389 22.0609 18.4 22.9998 18.4Z"
fill="#091E40"/>
</svg>

After

Width:  |  Height:  |  Size: 718 B

8
designer-base/src/main/resources/com/fine/theme/icon/notification/notification_dot.svg

@ -0,0 +1,8 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<g id="&#231;&#179;&#187;&#231;&#187;&#159;&#229;&#155;&#190;&#230;&#160;&#135;">
<rect id="Rectangle" x="10" y="0.5" width="5" height="5" rx="2.5" fill="#F1393C"/>
<path id="Subtract" fill-rule="evenodd" clip-rule="evenodd"
d="M12.4977 6.5L12.4977 11.75H3.49773L3.49775 6.5C3.49775 4.01472 5.51247 2 7.99775 2C8.38055 2 8.75219 2.0478 9.10702 2.13775C9.19114 1.80571 9.32272 1.49258 9.49412 1.20601C9.01837 1.0718 8.51644 1 7.99775 1C4.96018 1 2.49775 3.46243 2.49775 6.5L2.49773 11.75L1.98277 12.3348C1.8406 12.4963 1.95526 12.75 2.17041 12.75H2.49773H3.49773H12.4977H13.4977H13.8249C14.0401 12.75 14.1548 12.4963 14.0126 12.3348L13.4977 11.75L13.4977 6.5C13.4977 6.45195 13.4971 6.40404 13.4959 6.35628C13.1803 6.4498 12.846 6.5 12.5 6.5C12.4993 6.5 12.4985 6.5 12.4977 6.5ZM5.563 13.75C6.10759 14.507 6.99621 15 7.99997 15C9.00374 15 9.89236 14.507 10.4369 13.75H5.563Z"
fill="#0A1C38" fill-opacity="0.9"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.0 KiB

7
designer-base/src/main/resources/com/fine/theme/icon/popup/collapse_popup.svg

@ -0,0 +1,7 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<g id="icon &#230;&#148;&#182;&#232;&#181;&#183;&#233;&#157;&#162;&#230;&#157;&#191;">
<path id="Combined Shape" fill-rule="evenodd" clip-rule="evenodd"
d="M11.5404 6.63783L13.049 8.14644C13.1017 8.19919 13.1754 8.22665 13.2539 8.22279C13.4173 8.21476 13.5562 8.07581 13.5642 7.91245L13.8034 3.04896L8.93994 3.28815C8.86149 3.292 8.78472 3.32687 8.72652 3.38507C8.60532 3.50627 8.59611 3.69355 8.70594 3.80339L10.2146 5.312L3.2654 12.2612C2.86141 12.6651 2.83071 13.2894 3.19683 13.6556C3.56294 14.0217 4.18724 13.991 4.59123 13.587L11.5404 6.63783Z"
fill="#419BF9"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 720 B

5
designer-base/src/main/resources/com/fine/theme/icon/popup/expand_popup.svg

@ -0,0 +1,5 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd"
d="M5.45974 10.0667L3.95113 8.55807C3.89838 8.50533 3.82468 8.47786 3.74623 8.48172C3.58286 8.48975 3.44392 8.6287 3.43588 8.79207L3.19669 13.6556L8.06019 13.4164C8.13864 13.4125 8.21541 13.3776 8.27361 13.3194C8.3948 13.1982 8.40401 13.011 8.29418 12.9011L6.78557 11.3925L13.7347 4.44336C14.1387 4.03937 14.1694 3.41507 13.8033 3.04895C13.4372 2.68284 12.8129 2.71354 12.4089 3.11753L5.45974 10.0667Z"
fill="#2576EF"/>
</svg>

After

Width:  |  Height:  |  Size: 593 B

4
designer-base/src/main/resources/com/fine/theme/icon/up_arrow.svg

@ -0,0 +1,4 @@
<svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M7.51486 19.8033C7.12433 19.4128 7.12434 18.7796 7.51486 18.3891L16.0001 9.90381L24.4854 18.3891C24.8759 18.7796 24.876 19.4128 24.4854 19.8033C24.0949 20.1938 23.4617 20.1938 23.0712 19.8033L16.0001 12.7322L8.92907 19.8033C8.53855 20.1938 7.90538 20.1938 7.51486 19.8033Z"
fill="#0A1C38" fill-opacity="0.9"/>
</svg>

After

Width:  |  Height:  |  Size: 436 B

8
designer-base/src/main/resources/com/fine/theme/light/ui/laf/FineLightLaf.properties

@ -591,7 +591,8 @@ Popup.dropShadowPainted = true
Popup.dropShadowInsets = -4,-4,4,4 Popup.dropShadowInsets = -4,-4,4,4
Popup.dropShadowColor = #000 Popup.dropShadowColor = #000
Popup.dropShadowOpacity = 0.15 Popup.dropShadowOpacity = 0.15
PopupToolPane.height=34
PopupToolPane.borderInsets=0, 10, 0, 10
#---- PopupMenu ---- #---- PopupMenu ----
@ -717,7 +718,10 @@ SearchField.searchIconPressedColor = fade(Actions.GreyInline,50%,lazy)
SearchField.clearIconColor = fade(Actions.GreyInline,50%,lazy) SearchField.clearIconColor = fade(Actions.GreyInline,50%,lazy)
SearchField.clearIconHoverColor = $SearchField.clearIconColor SearchField.clearIconHoverColor = $SearchField.clearIconColor
SearchField.clearIconPressedColor = fade(Actions.GreyInline,80%,lazy) SearchField.clearIconPressedColor = fade(Actions.GreyInline,80%,lazy)
#---- SearchPanel ----
SearchPanel.labelBorderInsets=3, 6, 3, 4
SearchPanel.buttonBorderInsets=4, 4, 4, 4
TreeSearchToolbarPane.borderInsets=0, 8, 0, 8
#---- Separator ---- #---- Separator ----

2
designer-form/src/main/java/com/fr/design/parameter/RootDesignDefinePane.java

@ -176,7 +176,7 @@ public class RootDesignDefinePane extends AbstractDataModify<WParameterLayout> {
new Component[]{new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Form_Widget_Display_Position")), hAlignmentPane} new Component[]{new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Form_Widget_Display_Position")), hAlignmentPane}
}; };
JPanel panel = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, IntervalConstants.INTERVAL_W0, IntervalConstants.INTERVAL_L1); JPanel panel = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, IntervalConstants.INTERVAL_W0, IntervalConstants.INTERVAL_L1);
panel.setBorder(BorderFactory.createEmptyBorder(IntervalConstants.INTERVAL_L1, 0, IntervalConstants.INTERVAL_L1, 0)); panel.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0));
CRPropertyDescriptor[] extraTableEditor = new CRPropertyDescriptor[0]; CRPropertyDescriptor[] extraTableEditor = new CRPropertyDescriptor[0];
extraTableEditor = root.getExtraTableEditor(); extraTableEditor = root.getExtraTableEditor();
extraPropertyGroupPane = new PropertyGroupPane(extraTableEditor, root); extraPropertyGroupPane = new PropertyGroupPane(extraTableEditor, root);

14
designer-form/src/main/java/com/fr/design/widget/ui/designer/component/FormWidgetValuePane.java

@ -16,8 +16,11 @@ import com.fr.form.ui.WidgetValue;
import com.fr.form.ui.concept.data.ValueInitializer; import com.fr.form.ui.concept.data.ValueInitializer;
import com.fr.general.ComparatorUtils; import com.fr.general.ComparatorUtils;
import javax.swing.*; import javax.swing.JPanel;
import java.awt.*; import javax.swing.UIManager;
import java.awt.BorderLayout;
import java.awt.CardLayout;
import java.awt.Dimension;
/** /**
* Created by ibm on 2017/7/27. * Created by ibm on 2017/7/27.
@ -28,6 +31,9 @@ public class FormWidgetValuePane extends JPanel {
private JPanel customPane; private JPanel customPane;
private CardLayout cardLayout; private CardLayout cardLayout;
private final static int VER_GAP = UIManager.getInt("DataBindingEditor.vgap");
private final static int HEIGHT = UIManager.getInt("DataBindingEditor.height");
public FormWidgetValuePane(Object o, boolean onlyServer) { public FormWidgetValuePane(Object o, boolean onlyServer) {
DataControl widget = (DataControl) o; DataControl widget = (DataControl) o;
@ -53,9 +59,9 @@ public class FormWidgetValuePane extends JPanel {
widgetValueHead.setSelectedIndex(index); widgetValueHead.setSelectedIndex(index);
} }
if (ComparatorUtils.equals(editor[index].getName(), com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Widget_Field"))) { if (ComparatorUtils.equals(editor[index].getName(), com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Widget_Field"))) {
customPane.setPreferredSize(new Dimension(100, 47)); customPane.setPreferredSize(new Dimension(100, HEIGHT * 2 + VER_GAP));
} else { } else {
customPane.setPreferredSize(new Dimension(100, 20)); customPane.setPreferredSize(new Dimension(100, HEIGHT));
} }
cardLayout.show(customPane, editor[index].getName()); cardLayout.show(customPane, editor[index].getName());
} }

16
designer-realize/src/main/java/com/fr/design/mainframe/cell/settingpane/CellOtherSetPane.java

@ -44,6 +44,7 @@ import javax.swing.BorderFactory;
import javax.swing.ButtonGroup; import javax.swing.ButtonGroup;
import javax.swing.JPanel; import javax.swing.JPanel;
import javax.swing.SwingConstants; import javax.swing.SwingConstants;
import javax.swing.UIManager;
import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener; import javax.swing.event.ChangeListener;
import java.awt.BorderLayout; import java.awt.BorderLayout;
@ -66,6 +67,7 @@ public class CellOtherSetPane extends AbstractCellAttrPane {
private static final int HEAD_WDITH = 290; private static final int HEAD_WDITH = 290;
private static final int HEAD_HEIGTH = 24; private static final int HEAD_HEIGTH = 24;
private static final int COMBO_WIDTH = 154; private static final int COMBO_WIDTH = 154;
private static final int HEIGHT = UIManager.getInt("CellOtherSetPane.height");
private static final int BUTTON_GROUP_WIDTH = 140; private static final int BUTTON_GROUP_WIDTH = 140;
private static final double f = TableLayout.FILL; private static final double f = TableLayout.FILL;
private static final double p = TableLayout.PREFERRED; private static final double p = TableLayout.PREFERRED;
@ -263,7 +265,7 @@ public class CellOtherSetPane extends AbstractCellAttrPane {
@Override @Override
public void stateChanged(ChangeEvent e) { public void stateChanged(ChangeEvent e) {
if (insertRowPolicyButtonGroup.getSelectedIndex() == 1) { if (insertRowPolicyButtonGroup.getSelectedIndex() == 1) {
insertRowPane.setPreferredSize(new Dimension(100, 20)); insertRowPane.setPreferredSize(new Dimension(100, HEIGHT));
insertRowLayout.show(insertRowPane, "content"); insertRowLayout.show(insertRowPane, "content");
} else { } else {
insertRowLayout.show(insertRowPane, "none"); insertRowLayout.show(insertRowPane, "none");
@ -331,7 +333,7 @@ public class CellOtherSetPane extends AbstractCellAttrPane {
@Override @Override
public void stateChanged(ChangeEvent e) { public void stateChanged(ChangeEvent e) {
if (tooltipButtonGroup.getSelectedIndex() == 0) { if (tooltipButtonGroup.getSelectedIndex() == 0) {
tooltipPane.setPreferredSize(new Dimension(154, 20)); tooltipPane.setPreferredSize(new Dimension(154, HEIGHT));
tooltipLayout.show(tooltipPane, "content"); tooltipLayout.show(tooltipPane, "content");
} else { } else {
tooltipLayout.show(tooltipPane, "none"); tooltipLayout.show(tooltipPane, "none");
@ -367,7 +369,7 @@ public class CellOtherSetPane extends AbstractCellAttrPane {
@Override @Override
public void itemStateChanged(ItemEvent e) { public void itemStateChanged(ItemEvent e) {
if (showPartComboBox.getSelectedIndex() == 0) { if (showPartComboBox.getSelectedIndex() == 0) {
showPartPane.setPreferredSize(new Dimension(70, 20)); showPartPane.setPreferredSize(new Dimension(70, HEIGHT));
showPartLayout.show(showPartPane, "content"); showPartLayout.show(showPartPane, "content");
} else { } else {
showPartLayout.show(showPartPane, "none"); showPartLayout.show(showPartPane, "none");
@ -392,7 +394,7 @@ public class CellOtherSetPane extends AbstractCellAttrPane {
textOverflowComPane.setVisible(e.getStateChange() == ItemEvent.SELECTED); textOverflowComPane.setVisible(e.getStateChange() == ItemEvent.SELECTED);
if (e.getStateChange() == ItemEvent.SELECTED) { if (e.getStateChange() == ItemEvent.SELECTED) {
if (showPartComboBox.getSelectedIndex() == 0) { if (showPartComboBox.getSelectedIndex() == 0) {
showPartPane.setPreferredSize(new Dimension(70, 20)); showPartPane.setPreferredSize(new Dimension(70, HEIGHT));
showPartLayout.show(showPartPane, "content"); showPartLayout.show(showPartPane, "content");
} else { } else {
showPartLayout.show(showPartPane, "none"); showPartLayout.show(showPartPane, "none");
@ -505,7 +507,7 @@ public class CellOtherSetPane extends AbstractCellAttrPane {
public void itemStateChanged(ItemEvent e) { public void itemStateChanged(ItemEvent e) {
if (e.getStateChange() == ItemEvent.SELECTED) { if (e.getStateChange() == ItemEvent.SELECTED) {
if (showContent.getSelectedIndex() == 3) { if (showContent.getSelectedIndex() == 3) {
fileNamePane.setPreferredSize(new Dimension(100, 20)); fileNamePane.setPreferredSize(new Dimension(100, HEIGHT));
fileNameLayout.show(fileNamePane, "content"); fileNameLayout.show(fileNamePane, "content");
} else { } else {
fileNameLayout.show(fileNamePane, "none"); fileNameLayout.show(fileNamePane, "none");
@ -630,7 +632,7 @@ public class CellOtherSetPane extends AbstractCellAttrPane {
tooltipButtonGroup.setSelectedIndex(1); tooltipButtonGroup.setSelectedIndex(1);
} }
if (tooltipButtonGroup.getSelectedIndex() == 0) { if (tooltipButtonGroup.getSelectedIndex() == 0) {
tooltipPane.setPreferredSize(new Dimension(100, 20)); tooltipPane.setPreferredSize(new Dimension(100, HEIGHT));
tooltipLayout.show(tooltipPane, "content"); tooltipLayout.show(tooltipPane, "content");
} else { } else {
tooltipLayout.show(tooltipPane, "none"); tooltipLayout.show(tooltipPane, "none");
@ -683,7 +685,7 @@ public class CellOtherSetPane extends AbstractCellAttrPane {
this.valueEditor.populate(StringUtils.EMPTY); this.valueEditor.populate(StringUtils.EMPTY);
} }
if (insertRowPolicyButtonGroup.getSelectedIndex() == 1) { if (insertRowPolicyButtonGroup.getSelectedIndex() == 1) {
insertRowPane.setPreferredSize(new Dimension(100, 20)); insertRowPane.setPreferredSize(new Dimension(100, HEIGHT));
insertRowLayout.show(insertRowPane, "content"); insertRowLayout.show(insertRowPane, "content");
} else { } else {
insertRowLayout.show(insertRowPane, "none"); insertRowLayout.show(insertRowPane, "none");

10
designer-realize/src/main/java/com/fr/quickeditor/cellquick/CellFormulaQuickEditor.java

@ -1,5 +1,6 @@
package com.fr.quickeditor.cellquick; package com.fr.quickeditor.cellquick;
import com.fine.theme.icon.LazyIcon;
import com.fr.base.BaseFormula; import com.fr.base.BaseFormula;
import com.fr.base.Style; import com.fr.base.Style;
import com.fr.base.TextFormat; import com.fr.base.TextFormat;
@ -14,7 +15,6 @@ import com.fr.design.layout.TableLayout;
import com.fr.design.layout.TableLayoutHelper; import com.fr.design.layout.TableLayoutHelper;
import com.fr.design.mainframe.DesignerContext; import com.fr.design.mainframe.DesignerContext;
import com.fr.design.mainframe.theme.utils.DefaultThemedTemplateCellElementCase; import com.fr.design.mainframe.theme.utils.DefaultThemedTemplateCellElementCase;
import com.fr.general.IOUtils;
import com.fr.grid.selection.CellSelection; import com.fr.grid.selection.CellSelection;
import com.fr.quickeditor.CellQuickEditor; import com.fr.quickeditor.CellQuickEditor;
import com.fr.report.ReportHelper; import com.fr.report.ReportHelper;
@ -25,6 +25,7 @@ import com.fr.stable.StringUtils;
import javax.swing.BorderFactory; import javax.swing.BorderFactory;
import javax.swing.JComponent; import javax.swing.JComponent;
import javax.swing.JPanel; import javax.swing.JPanel;
import javax.swing.UIManager;
import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener; import javax.swing.event.DocumentListener;
import java.awt.BorderLayout; import java.awt.BorderLayout;
@ -59,6 +60,9 @@ public class CellFormulaQuickEditor extends CellQuickEditor {
//正在编辑的单元格 //正在编辑的单元格
private TemplateCellElement editingCellElement; private TemplateCellElement editingCellElement;
private static final int BUTTON_WIDTH = UIManager.getInt("FormulaPane.buttonWidth");
private static final int BUTTON_HEIGHT = UIManager.getInt("FormulaPane.buttonHeight");
private DocumentListener documentListener = new DocumentListener() { private DocumentListener documentListener = new DocumentListener() {
@Override @Override
public void insertUpdate(DocumentEvent e) { public void insertUpdate(DocumentEvent e) {
@ -100,9 +104,9 @@ public class CellFormulaQuickEditor extends CellQuickEditor {
textFieldPane.add(formulaTextField, BorderLayout.CENTER); textFieldPane.add(formulaTextField, BorderLayout.CENTER);
textFieldPane.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 5)); textFieldPane.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 5));
UIButton formulaButton = new UIButton(IOUtils.readIcon("/com/fr/design/images/m_insert/formula.png")); UIButton formulaButton = new UIButton(new LazyIcon("formula"));
formulaButton.setToolTipText(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Formula") + "..."); formulaButton.setToolTipText(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Formula") + "...");
formulaButton.setPreferredSize(new Dimension(20, formulaTextField.getPreferredSize().height)); formulaButton.setPreferredSize(new Dimension(BUTTON_WIDTH, BUTTON_HEIGHT));
formulaButton.addActionListener(new ActionListener() { formulaButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) { public void actionPerformed(ActionEvent evt) {
final UIFormula formulaPane = FormulaFactory.createFormulaPaneWhenReserveFormula(); final UIFormula formulaPane = FormulaFactory.createFormulaPaneWhenReserveFormula();

Loading…
Cancel
Save