Browse Source

REPORT-107972 设计器样式翻新-翻新按钮组

newui
Levy.Xie-解安森 1 year ago
parent
commit
39cda96bd2
  1. 147
      designer-base/src/main/java/com/fr/design/style/AbstractSelectBox.java
  2. 5
      designer-base/src/main/java/com/fr/design/style/background/BackgroundJComponent.java

147
designer-base/src/main/java/com/fr/design/style/AbstractSelectBox.java

@ -1,29 +1,24 @@
package com.fr.design.style; package com.fr.design.style;
import com.fr.design.constants.UIConstants; import com.fine.theme.light.ui.FineRoundBorder;
import com.fr.design.gui.ibutton.UIButton; import com.formdev.flatlaf.ui.FlatArrowButton;
import com.fr.design.gui.ibutton.UIButtonUI; import com.fr.design.event.HoverAware;
import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.layout.FRGUIPaneFactory;
import com.fr.design.style.background.BackgroundJComponent; import com.fr.design.style.background.BackgroundJComponent;
import com.fr.design.utils.gui.GUIPaintUtils;
import com.fr.stable.Constants;
import javax.swing.AbstractButton;
import javax.swing.JPanel; import javax.swing.JPanel;
import javax.swing.JWindow; import javax.swing.JButton;
import javax.swing.border.AbstractBorder; import javax.swing.UIManager;
import javax.swing.event.AncestorEvent; import javax.swing.event.AncestorEvent;
import javax.swing.event.AncestorListener; import javax.swing.event.AncestorListener;
import javax.swing.plaf.ButtonUI; import javax.swing.SwingConstants;
import java.awt.BorderLayout; import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Dimension; import java.awt.Dimension;
import java.awt.Graphics; import java.awt.Graphics;
import java.awt.Graphics2D; import java.awt.Graphics2D;
import java.awt.Insets;
import java.awt.Point; import java.awt.Point;
import java.awt.Rectangle; import java.awt.Rectangle;
import java.awt.RenderingHints; import java.awt.Color;
import java.awt.event.MouseAdapter; import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent; import java.awt.event.MouseEvent;
import java.awt.event.MouseListener; import java.awt.event.MouseListener;
@ -33,56 +28,35 @@ import java.awt.event.MouseListener;
* @version 创建时间2011-10-31 下午03:28:31 类说明: 抽象出来的弹出box. 可以弹出颜色选择, 图案选择, 纹理选择. * @version 创建时间2011-10-31 下午03:28:31 类说明: 抽象出来的弹出box. 可以弹出颜色选择, 图案选择, 纹理选择.
* 主要是 弹出界面的不同 * 主要是 弹出界面的不同
*/ */
public abstract class AbstractSelectBox<T> extends AbstractPopBox implements MouseListener { public abstract class AbstractSelectBox<T> extends AbstractPopBox implements MouseListener, HoverAware {
private static final long serialVersionUID = 2355250206956896774L; private static final long serialVersionUID = 2355250206956896774L;
private UIButton triggleButton; private boolean rollOver;
private JButton triggerButton;
private final int boxSize = UIManager.getInt("ComboBox.comboHeight");
private final int buttonOffsetX = UIManager.getInt("ComboBox.selectBox.button.offsetX");
protected void initBox(int preWidth) { protected void initBox(int preWidth) {
// 初始化面板布局
this.setLayout(FRGUIPaneFactory.createBorderLayout()); this.setLayout(FRGUIPaneFactory.createBorderLayout());
this.setBorder(new FineRoundBorder());
this.setPreferredSize(new Dimension(getWidth(), boxSize));
// 初始化组件
displayComponent = new BackgroundJComponent(); displayComponent = new BackgroundJComponent();
displayComponent.setEmptyBackground(); triggerButton = new SelectBoxButton();
triggleButton = new UIButton(UIConstants.ARROW_DOWN_ICON) { // 初始化组件布局
public boolean shouldResponseChangeListener() {
return false;
}
@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);
}
}
};
}
};
triggleButton.setPreferredSize(new Dimension(20, 20));
triggleButton.setRoundBorder(true, Constants.LEFT);
JPanel displayPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); JPanel displayPane = FRGUIPaneFactory.createBorderLayout_S_Pane();
displayPane.setBorder(null);
displayPane.add(displayComponent, BorderLayout.CENTER); displayPane.add(displayComponent, BorderLayout.CENTER);
displayComponent.setPreferredSize(new Dimension(preWidth, displayPane.getPreferredSize().height)); displayComponent.setPreferredSize(new Dimension(preWidth, displayPane.getPreferredSize().height));
// 添加事件监听
displayComponent.addMouseListener(mouseListener); displayComponent.addMouseListener(mouseListener);
triggleButton.addMouseListener(mouseListener); triggerButton.addMouseListener(mouseListener);
displayComponent.addMouseListener(this); displayComponent.addMouseListener(this);
triggleButton.addMouseListener(this); triggerButton.addMouseListener(this);
this.add(displayPane, BorderLayout.CENTER); this.add(displayPane, BorderLayout.CENTER);
this.add(triggleButton, BorderLayout.EAST); this.add(triggerButton, BorderLayout.EAST);
this.addAncestorListener(new AncestorListener() { this.addAncestorListener(new AncestorListener() {
public void ancestorAdded(AncestorEvent event) { public void ancestorAdded(AncestorEvent event) {
@ -130,78 +104,95 @@ public abstract class AbstractSelectBox<T> extends AbstractPopBox implements Mou
super.setEnabled(enabled); super.setEnabled(enabled);
displayComponent.setEnabled(enabled); displayComponent.setEnabled(enabled);
triggleButton.setEnabled(enabled); triggerButton.setEnabled(enabled);
} }
@Override @Override
public JPanel initWindowPane(double preWidth) { public JPanel initWindowPane(double preWidth) {
// TODO Auto-generated method stub
return null; return null;
} }
@Override @Override
public void paint(Graphics g) { public void paint(Graphics g) {
super.paint(g); super.paint(g);
Graphics2D g2d = (Graphics2D)g; triggerButton.setSelected(isPopupVisible());
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g2d.setColor(UIConstants.POP_DIALOG_BORDER);
g2d.drawRoundRect(0, 0, this.getWidth() - 1 , this.getHeight() - 1, 4, 4);
triggleButton.setSelected(isPopupVisible());
} }
/**
* 应用于SelectBox的右侧按钮
*/
protected class SelectBoxButton extends FlatArrowButton {
public void addDemoPaneMouseListener(MouseListener l) { protected SelectBoxButton() {
displayComponent.addMouseListener(l); this(SwingConstants.SOUTH,
triggleButton.addMouseListener(l); UIManager.getString("Component.arrowType"),
UIManager.getColor("ComboBox.buttonArrowColor"),
UIManager.getColor("ComboBox.buttonDisabledArrowColor"),
null, null, null, null);
} }
public abstract T getSelectObject(); protected SelectBoxButton(int direction, String type, Color foreground, Color disabledForeground,
Color hoverForeground, Color hoverBackground, Color pressedForeground, Color pressedBackground) {
public abstract void setSelectObject(T t); super(direction, type, foreground, disabledForeground,
hoverForeground, hoverBackground, pressedForeground, pressedBackground);
private class TriggleLineBorder extends AbstractBorder { }
private static final long serialVersionUID = 1065857667981063530L;
protected Insets borderInsets = new Insets(0, 0, 0, 0);
public void paintBorder(Component c, Graphics g, int x, int y, int w, int h) {
g.translate(x, y);
g.setColor(UIConstants.POP_DIALOG_BORDER); @Override
protected void paintArrow(Graphics2D g) {
if (isPopupVisible()) {
setDirection(SwingConstants.NORTH);
} else {
setDirection(SwingConstants.SOUTH);
}
super.paintArrow(g);
}
g.translate(-x, -y); @Override
public Dimension getPreferredSize() {
return new Dimension(boxSize, boxSize);
} }
public Insets getBorderInsets(Component c) { @Override
return borderInsets; public float getXOffset() {
return buttonOffsetX;
} }
} }
public abstract T getSelectObject();
public abstract void setSelectObject(T t);
@Override @Override
public void mouseEntered(MouseEvent e) { public void mouseEntered(MouseEvent e) {
triggleButton.getModel().setRollover(true); rollOver = true;
repaint();
} }
@Override @Override
public void mouseExited(MouseEvent e) { public void mouseExited(MouseEvent e) {
triggleButton.getModel().setRollover(false); rollOver = false;
repaint();
} }
@Override @Override
public void mouseClicked(MouseEvent e) { public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub
} }
@Override @Override
public void mousePressed(MouseEvent e) { public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
} }
@Override @Override
public void mouseReleased(MouseEvent e) { public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
} }
@Override
public boolean isHovered() {
return rollOver;
}
} }

5
designer-base/src/main/java/com/fr/design/style/background/BackgroundJComponent.java

@ -1,12 +1,9 @@
package com.fr.design.style.background; package com.fr.design.style.background;
import java.awt.Color;
import java.awt.Graphics; import java.awt.Graphics;
import java.awt.Insets; import java.awt.Insets;
import java.awt.geom.Rectangle2D; import java.awt.geom.Rectangle2D;
import javax.swing.JComponent; import javax.swing.JComponent;
import com.fr.design.border.UIRoundedBorder;
import com.fr.general.Background; import com.fr.general.Background;
/** /**
@ -20,7 +17,6 @@ public class BackgroundJComponent extends JComponent {
protected Background background ; protected Background background ;
public BackgroundJComponent() { public BackgroundJComponent() {
this.setBorder(new UIRoundedBorder(Color.decode("#999999"), 2, 2));
} }
public BackgroundJComponent(Background background) { public BackgroundJComponent(Background background) {
@ -37,7 +33,6 @@ public class BackgroundJComponent extends JComponent {
} }
public void setEmptyBackground() { public void setEmptyBackground() {
this.background = null; this.background = null;
} }

Loading…
Cancel
Save