Browse Source

Merge remote-tracking branch 'origin/release/9.0' into release/9.0

master
mengao 7 years ago
parent
commit
212f035a1f
  1. 5
      designer/src/com/fr/design/widget/ui/DateEditorDefinePane.java
  2. 2
      designer/src/com/fr/poly/PolyDesignUI.java
  3. 3
      designer/src/com/fr/poly/PolyDesigner.java
  4. 9
      designer/src/com/fr/poly/PolyUtils.java
  5. 8
      designer/src/com/fr/poly/creator/ECBlockCreator.java
  6. 2
      designer/src/com/fr/poly/hanlder/BottomCornerMouseHanlder.java
  7. 2
      designer/src/com/fr/quickeditor/CellQuickEditor.java
  8. 66
      designer/src/com/fr/start/ReportSplashPane.java
  9. 4
      designer_base/src/com/fr/design/constants/UIConstants.java
  10. 17
      designer_base/src/com/fr/design/foldablepane/HeaderPane.java
  11. 3
      designer_base/src/com/fr/design/gui/UILookAndFeel.java
  12. 4
      designer_base/src/com/fr/design/gui/controlpane/UIControlPane.java
  13. 2
      designer_base/src/com/fr/design/gui/controlpane/UIListControlPane.java
  14. 35
      designer_base/src/com/fr/design/gui/ibutton/UIButtonUI.java
  15. 2
      designer_base/src/com/fr/design/gui/icombobox/UIComboBoxRenderer.java
  16. 2
      designer_base/src/com/fr/design/gui/icontainer/UIEastResizableContainer.java
  17. 2
      designer_base/src/com/fr/design/gui/icontainer/UIResizableContainer.java
  18. 4
      designer_base/src/com/fr/design/gui/itoolbar/UIToolBarUI.java
  19. 5
      designer_base/src/com/fr/design/gui/style/BackgroundPane.java
  20. 23
      designer_base/src/com/fr/design/gui/style/BorderPane.java
  21. 1
      designer_base/src/com/fr/design/mainframe/EastRegionContainerPane.java
  22. 7
      designer_base/src/com/fr/design/mainframe/backgroundpane/ColorBackgroundQuickPane.java
  23. 84
      designer_base/src/com/fr/design/utils/gui/GUIPaintUtils.java
  24. 116
      designer_base/src/com/fr/design/widget/component/UIComboBoxNoArrow.java
  25. 7
      designer_base/src/com/fr/start/BaseDesigner.java
  26. 72
      designer_base/src/com/fr/start/SplashPane.java
  27. 6
      designer_base/src/com/fr/start/SplashWindow.java
  28. 8
      designer_form/src/com/fr/design/designer/creator/XBorderStyleWidgetCreator.java
  29. 9
      designer_form/src/com/fr/design/mainframe/FormHierarchyTreePane.java
  30. 11
      designer_form/src/com/fr/design/mainframe/widget/ui/FormWidgetCardPane.java
  31. 5
      designer_form/src/com/fr/design/widget/ui/designer/DateEditorDefinePane.java

5
designer/src/com/fr/design/widget/ui/DateEditorDefinePane.java

@ -10,6 +10,7 @@ import com.fr.design.layout.FRGUIPaneFactory;
import com.fr.design.layout.TableLayout; import com.fr.design.layout.TableLayout;
import com.fr.design.layout.TableLayoutHelper; import com.fr.design.layout.TableLayoutHelper;
import com.fr.design.widget.component.DateValuePane; import com.fr.design.widget.component.DateValuePane;
import com.fr.design.widget.component.UIComboBoxNoArrow;
import com.fr.form.ui.DateEditor; import com.fr.form.ui.DateEditor;
import com.fr.general.DateUtils; import com.fr.general.DateUtils;
import com.fr.general.Inter; import com.fr.general.Inter;
@ -92,8 +93,8 @@ public class DateEditorDefinePane extends DirectWriteEditorDefinePane<DateEditor
private JPanel createFormatHead(){ private JPanel createFormatHead(){
String[] dateArray = FormatField.getInstance().getFormatArray(FormatField.FormatContents.DATE); String[] dateArray = FormatField.getInstance().getFormatArray(FormatField.FormatContents.DATE);
String[] timeArray = FormatField.getInstance().getFormatArray(FormatField.FormatContents.TIME); String[] timeArray = FormatField.getInstance().getFormatArray(FormatField.FormatContents.TIME);
final UIComboBox dateFormatComboBox = new UIComboBox(dateArray); final UIComboBox dateFormatComboBox = new UIComboBoxNoArrow(dateArray);
final UIComboBox timeFormatComboBox = new UIComboBox(timeArray); final UIComboBox timeFormatComboBox = new UIComboBoxNoArrow(timeArray);
dateFormatComboBox.addActionListener(new ActionListener(){ dateFormatComboBox.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){ public void actionPerformed(ActionEvent e){
refreshPreviewLabel(); refreshPreviewLabel();

2
designer/src/com/fr/poly/PolyDesignUI.java

@ -106,7 +106,7 @@ public class PolyDesignUI extends ComponentUI {
BlockCreator creator = addedData.getAddedAt(i); BlockCreator creator = addedData.getAddedAt(i);
// richer:如果当前这个组件正在编辑,那么他是完全被他的编辑器所遮挡的,不需要画出来 // richer:如果当前这个组件正在编辑,那么他是完全被他的编辑器所遮挡的,不需要画出来
if (creator == designer.getSelection()) { if (creator == designer.getSelection()) {
paintPositionLine(g, Math.round(creator.getX() * time), Math.round(creator.getY() * time), paintPositionLine(g, Math.round(creator.getX(time)), Math.round(creator.getY(time)),
Math.round(designer.getHorizontalValue()*time), Math.round(designer.getVerticalValue()*time)); Math.round(designer.getHorizontalValue()*time), Math.round(designer.getVerticalValue()*time));
if (creator.getEditor().isDragging()) { if (creator.getEditor().isDragging()) {
creator.getEditor().paintAbsorptionline(g); creator.getEditor().paintAbsorptionline(g);

3
designer/src/com/fr/poly/PolyDesigner.java

@ -272,7 +272,6 @@ public class PolyDesigner extends ReportComponent<PolyWorkSheet, PolyElementCase
this.time = (float) resolution / ScreenResolution.getScreenResolution(); this.time = (float) resolution / ScreenResolution.getScreenResolution();
resetEditorComponentBounds(); resetEditorComponentBounds();
LayoutUtils.layoutRootContainer(this);
g.setColor(Color.black); g.setColor(Color.black);
GraphHelper.drawLine(g, 0, 0, this.getWidth(), 0); GraphHelper.drawLine(g, 0, 0, this.getWidth(), 0);
GraphHelper.drawLine(g, 0, 0, 0, this.getHeight()); GraphHelper.drawLine(g, 0, 0, 0, this.getHeight());
@ -281,7 +280,7 @@ public class PolyDesigner extends ReportComponent<PolyWorkSheet, PolyElementCase
private void resetEditorComponentBounds() { private void resetEditorComponentBounds() {
if (selection != null) { if (selection != null) {
selection.setResolution(this.resolution); selection.setResolution(ScreenResolution.getScreenResolution());
selection.getEditor().setBounds((int) (selection.getEditorBounds().x * time), (int) (selection.getEditorBounds().y * time), selection.getEditor().setBounds((int) (selection.getEditorBounds().x * time), (int) (selection.getEditorBounds().y * time),
(int) (selection.getEditorBounds().width * time), (int) (selection.getEditorBounds().height * time)); (int) (selection.getEditorBounds().width * time), (int) (selection.getEditorBounds().height * time));
LayoutUtils.layoutRootContainer(this); LayoutUtils.layoutRootContainer(this);

9
designer/src/com/fr/poly/PolyUtils.java

@ -115,10 +115,11 @@ public class PolyUtils {
AddedData addedData = designer.getAddedData(); AddedData addedData = designer.getAddedData();
for (int count = addedData.getAddedCount() - 1; count >= 0; count--) { for (int count = addedData.getAddedCount() - 1; count >= 0; count--) {
BlockCreator creator = addedData.getAddedAt(count); BlockCreator creator = addedData.getAddedAt(count);
int cx = creator.getX(); float times = (float) designer.getResolution()/ScreenResolution.getScreenResolution();
int cy = creator.getY(); int cx = (int) (creator.getX() * times);
int cw = creator.getWidth(); int cy = (int) (creator.getY() * times);
int ch = creator.getHeight(); int cw = (int) (creator.getWidth() * times);
int ch = (int) (creator.getHeight() * times);
if (x >= cx && x <= (cx + cw)) { if (x >= cx && x <= (cx + cw)) {
if(y >= cy && y <= (cy + ch)) { if(y >= cy && y <= (cy + ch)) {
return creator; return creator;

8
designer/src/com/fr/poly/creator/ECBlockCreator.java

@ -23,8 +23,8 @@ import com.fr.stable.unit.UnitRectangle;
*/ */
public class ECBlockCreator extends BlockCreator<PolyECBlock> { public class ECBlockCreator extends BlockCreator<PolyECBlock> {
private ECBlockEditor editor; private ECBlockEditor editor;
private static final int CREATOR_WIDTH = 30; private static final int CREATOR_WIDTH = 20;
private static final int CREATOR_HEIGHT = 19; private static final int CREATOR_HEIGHT = 9;
public ECBlockCreator() { public ECBlockCreator() {
@ -69,12 +69,12 @@ public class ECBlockCreator extends BlockCreator<PolyECBlock> {
@Override @Override
public int getX(float time) { public int getX(float time) {
return (int) ((this.getX() - CREATOR_WIDTH) * time) + CREATOR_WIDTH; return Math.round ((this.getX() - CREATOR_WIDTH) * time) + CREATOR_WIDTH;
} }
@Override @Override
public int getY(float time) { public int getY(float time) {
return (int) ((this.getY() - CREATOR_HEIGHT) * time) + CREATOR_HEIGHT; return Math.round ((this.getY() - CREATOR_HEIGHT) * time) + CREATOR_HEIGHT;
} }
/** /**

2
designer/src/com/fr/poly/hanlder/BottomCornerMouseHanlder.java

@ -15,6 +15,7 @@ import com.fr.design.beans.location.Absorptionline;
import com.fr.design.beans.location.MoveUtils; import com.fr.design.beans.location.MoveUtils;
import com.fr.design.beans.location.MoveUtils.RectangleDesigner; import com.fr.design.beans.location.MoveUtils.RectangleDesigner;
import com.fr.design.beans.location.MoveUtils.RectangleIterator; import com.fr.design.beans.location.MoveUtils.RectangleIterator;
import com.fr.design.file.HistoryTemplateListPane;
import com.fr.general.ComparatorUtils; import com.fr.general.ComparatorUtils;
import com.fr.poly.PolyDesigner; import com.fr.poly.PolyDesigner;
import com.fr.poly.PolyDesigner.SelectionType; import com.fr.poly.PolyDesigner.SelectionType;
@ -101,6 +102,7 @@ public class BottomCornerMouseHanlder extends MouseInputAdapter {
dragStart.y -= pressed.y; dragStart.y -= pressed.y;
TemplateBlock block = editor.getValue(); TemplateBlock block = editor.getValue();
resolution = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate().getJTemplateResolution();
Rectangle bounds = block.getBounds().toRectangle(resolution); Rectangle bounds = block.getBounds().toRectangle(resolution);
Point resultPoint = MoveUtils.sorption(bounds.x + dragStart.x < 0 ? 0 : bounds.x + dragStart.x, bounds.y Point resultPoint = MoveUtils.sorption(bounds.x + dragStart.x < 0 ? 0 : bounds.x + dragStart.x, bounds.y
+ dragStart.y < 0 ? 0 : bounds.y + dragStart.y, bounds.width, bounds.height, rectDesigner, false); + dragStart.y < 0 ? 0 : bounds.y + dragStart.y, bounds.width, bounds.height, rectDesigner, false);

2
designer/src/com/fr/quickeditor/CellQuickEditor.java

@ -235,6 +235,8 @@ public abstract class CellQuickEditor extends QuickEditor<ElementCasePane> {
public void actionPerformed(ActionEvent e) { public void actionPerformed(ActionEvent e) {
cellInsertActions = ActionFactory.createCellInsertAction(ElementCasePane.class, tc); cellInsertActions = ActionFactory.createCellInsertAction(ElementCasePane.class, tc);
selectedIndex = comboBox.getSelectedIndex(); selectedIndex = comboBox.getSelectedIndex();
comboBox.setPopupVisible(false);
comboBox.repaint();
cellInsertActions[selectedIndex].actionPerformed(e); cellInsertActions[selectedIndex].actionPerformed(e);
comboBox.setSelectedIndex(currentSelectedIndex); comboBox.setSelectedIndex(currentSelectedIndex);
} }

66
designer/src/com/fr/start/ReportSplashPane.java

@ -1,8 +1,7 @@
/**
*
*/
package com.fr.start; package com.fr.start;
import com.bulenkov.iconloader.IconLoader;
import com.bulenkov.iconloader.util.JBUI;
import com.fr.base.BaseUtils; import com.fr.base.BaseUtils;
import com.fr.base.FRContext; import com.fr.base.FRContext;
import com.fr.base.GraphHelper; import com.fr.base.GraphHelper;
@ -10,8 +9,6 @@ import com.fr.design.mainframe.bbs.BBSConstants;
import com.fr.general.GeneralContext; import com.fr.general.GeneralContext;
import com.fr.general.Inter; import com.fr.general.Inter;
import com.fr.general.ModuleContext; import com.fr.general.ModuleContext;
import com.fr.stable.Constants;
import com.fr.stable.CoreGraphHelper;
import com.fr.stable.StableUtils; import com.fr.stable.StableUtils;
import com.fr.stable.StringUtils; import com.fr.stable.StringUtils;
import com.fr.stable.module.ModuleAdapter; import com.fr.stable.module.ModuleAdapter;
@ -19,9 +16,6 @@ import com.fr.stable.module.ModuleListener;
import javax.swing.*; import javax.swing.*;
import java.awt.*; import java.awt.*;
import java.awt.font.FontRenderContext;
import java.awt.font.LineMetrics;
import java.awt.image.BufferedImage;
import java.util.Locale; import java.util.Locale;
import java.util.Random; import java.util.Random;
import java.util.TimerTask; import java.util.TimerTask;
@ -36,12 +30,14 @@ public class ReportSplashPane extends SplashPane {
private static final String SPLASH_MAC_CN = "splash_chinese_mac.png"; private static final String SPLASH_MAC_CN = "splash_chinese_mac.png";
private static final String SPLASH_MAC_EN = "splash_english_mac.png"; private static final String SPLASH_MAC_EN = "splash_english_mac.png";
private static final Color MODULE_COLOR = new Color(230, 230, 230); private static float JBUI_INIT_SCALE = JBUI.scale(1f);
private static final int MODULE_INFO_X = 25;
private static final int MODULE_INFO_Y = 270; private static final Color MODULE_COLOR = new Color(255, 255, 255);
private static final int MODULE_INFO_X = uiScale(54);
private static final int MODULE_INFO_Y = uiScale(340);
private static final Color THANK_COLOR = new Color(72, 216, 249); private static final Color THANK_COLOR = new Color(255, 255, 255, (int) (0.4 * 255 + 0.5));
private static final int THANK_INFO_X = 460; private static final int THANK_INFO_Y = uiScale(382);
private static final String GUEST = getRandomUser(); private static final String GUEST = getRandomUser();
@ -52,6 +48,14 @@ public class ReportSplashPane extends SplashPane {
private String[] loading = new String[]{"..", "....", "......"}; private String[] loading = new String[]{"..", "....", "......"};
private java.util.Timer timer = new java.util.Timer(); private java.util.Timer timer = new java.util.Timer();
private static float uiScale(float f) {
return f * JBUI_INIT_SCALE;
}
private static int uiScale(int i) {
return (int) (i * JBUI_INIT_SCALE);
}
public ReportSplashPane() { public ReportSplashPane() {
init(); init();
} }
@ -80,52 +84,34 @@ public class ReportSplashPane extends SplashPane {
} }
protected void paintComponent(Graphics g) { protected void paintComponent(Graphics g) {
super.paintComponent(g); Icon icon = IconLoader.getIcon(StableUtils.pathJoin(OEM_PATH, getImageName()));
Graphics2D g2d = (Graphics2D) g; icon.paintIcon(null, g, 0, 0);
Image image = getSplashImage(); paintShowText((Graphics2D) g);
ImageIcon imageIcon = new ImageIcon(image);
GraphHelper.paintImage(g2d, imageIcon.getIconWidth(), imageIcon.getIconHeight(), image, Constants.IMAGE_DEFAULT, Constants.NULL, Constants.CENTER, -1, -1);
} }
public void setShowText(String text) { public void setShowText(String text) {
this.showText = text; this.showText = text;
} }
public BufferedImage getSplashImage() { public Image getSplashImage() {
// p:初始化splashImage,其中画了字符. Icon icon = IconLoader.getIcon(StableUtils.pathJoin(OEM_PATH, getImageName()));
Image image = createSplashBackground(); return ((ImageIcon) IconLoader.getIconSnapshot(icon)).getImage();
BufferedImage splashBuffedImage = CoreGraphHelper.toBufferedImage(image);
Graphics2D splashG2d = splashBuffedImage.createGraphics();
splashG2d.setPaint(new Color(230, 230, 230));
splashG2d.setFont(new Font("Dialog", Font.PLAIN, 11));
//绘制需要显示的文本
paintShowText(splashG2d);
return splashBuffedImage;
} }
private void paintShowText(Graphics2D splashG2d) { private void paintShowText(Graphics2D splashG2d) {
FontRenderContext fontRenderContext = splashG2d.getFontRenderContext(); GraphHelper.applyRenderingHints(splashG2d);
LineMetrics fm = splashG2d.getFont().getLineMetrics("",
fontRenderContext);
double leading = fm.getLeading();
double ascent = fm.getAscent();
double height = fm.getHeight();
splashG2d.setPaint(MODULE_COLOR); splashG2d.setPaint(MODULE_COLOR);
splashG2d.setFont(new Font("Dialog", Font.PLAIN, 12)); splashG2d.setFont(new Font("Dialog", Font.PLAIN, 12));
//加载模块信息 //加载模块信息
double y = MODULE_INFO_Y + height + leading + ascent; GraphHelper.drawString(splashG2d, showText, MODULE_INFO_X, MODULE_INFO_Y);
GraphHelper.drawString(splashG2d, showText, MODULE_INFO_X, y);
//每次随机感谢一位论坛用户 //每次随机感谢一位论坛用户
if (shouldShowThanks()) { if (shouldShowThanks()) {
splashG2d.setPaint(THANK_COLOR); splashG2d.setPaint(THANK_COLOR);
String content = Inter.getLocText("FR-Designer_Thanks-To") + GUEST; String content = Inter.getLocText("FR-Designer_Thanks-To") + GUEST;
GraphHelper.drawString(splashG2d, content, THANK_INFO_X, y); GraphHelper.drawString(splashG2d, content, MODULE_INFO_X, THANK_INFO_Y);
} }
} }

4
designer_base/src/com/fr/design/constants/UIConstants.java

@ -64,6 +64,9 @@ public interface UIConstants {
Constants.LINE_MEDIUM_DASH_DOT_DOT, //medium dash-dot-dot border Constants.LINE_MEDIUM_DASH_DOT_DOT, //medium dash-dot-dot border
Constants.LINE_SLANTED_DASH_DOT, //slanted dash-dot border Constants.LINE_SLANTED_DASH_DOT, //slanted dash-dot border
}; };
public static final Color COMBOBOX_BTN_NORMAL = new Color(0xD9DADD);
public static final Color COMBOBOX_BTN_ROLLOVER = new Color(0xC8C9CD);
public static final Color COMBOBOX_BTN_PRESS = new Color(0xD8F2FD);
public static final Color LINE_COLOR = new Color(153, 153, 153); public static final Color LINE_COLOR = new Color(153, 153, 153);
public static final Color FONT_COLOR = new Color(51, 51, 51); public static final Color FONT_COLOR = new Color(51, 51, 51);
public static final Color LIGHT_BLUE = new Color(182, 217, 253); public static final Color LIGHT_BLUE = new Color(182, 217, 253);
@ -110,6 +113,7 @@ public interface UIConstants {
public static final Color TAB_BUTTON_HOVER_SELECTED = new Color(239, 238, 243); public static final Color TAB_BUTTON_HOVER_SELECTED = new Color(239, 238, 243);
public static final Color TAB_BUTTON_PRESS = new Color(228, 227, 232); public static final Color TAB_BUTTON_PRESS = new Color(228, 227, 232);
public static final Color TAB_BUTTON_PRESS_SELECTED = new Color(236, 236, 238); public static final Color TAB_BUTTON_PRESS_SELECTED = new Color(236, 236, 238);
public static final Color POPUP_TITLE_BACKGROUND = new Color(0xd8f2fd);

17
designer_base/src/com/fr/design/foldablepane/HeaderPane.java

@ -1,5 +1,6 @@
package com.fr.design.foldablepane; package com.fr.design.foldablepane;
import com.fr.base.GraphHelper;
import com.fr.design.constants.UIConstants; import com.fr.design.constants.UIConstants;
import com.fr.design.gui.syntax.ui.rsyntaxtextarea.RSyntaxUtilities; import com.fr.design.gui.syntax.ui.rsyntaxtextarea.RSyntaxUtilities;
@ -53,6 +54,7 @@ public class HeaderPane extends JPanel {
RenderingHints.VALUE_ANTIALIAS_ON); RenderingHints.VALUE_ANTIALIAS_ON);
BufferedImage panelImage = createPanelImage(); BufferedImage panelImage = createPanelImage();
g2d.drawImage(panelImage, null, 0, 0); g2d.drawImage(panelImage, null, 0, 0);
GraphHelper.drawString(g2d, this.title, TITLE_X, headHeight - fontSize / 2 - 1);
} }
private BufferedImage createPanelImage() { private BufferedImage createPanelImage() {
@ -67,7 +69,6 @@ public class HeaderPane extends JPanel {
if (desktopHints != null) { if (desktopHints != null) {
g2d.setRenderingHints(desktopHints); g2d.setRenderingHints(desktopHints);
} }
g2d.drawString(this.title, TITLE_X, headHeight - fontSize / 2 - 1);
int leftWdith = headWidth - LEFT_X; int leftWdith = headWidth - LEFT_X;
if (this.isShow) { if (this.isShow) {
image = UIConstants.DRAG_DOWN_SELECTED_SMALL; image = UIConstants.DRAG_DOWN_SELECTED_SMALL;
@ -103,13 +104,13 @@ public class HeaderPane extends JPanel {
} }
public static void main(String[] args) { public static void main(String[] args) {
// JFrame mainFrame = new JFrame("UI Demo - Gloomyfish"); JFrame mainFrame = new JFrame("UI Demo - Gloomyfish");
// mainFrame.getContentPane().setLayout(new BorderLayout()); mainFrame.getContentPane().setLayout(new BorderLayout());
// mainFrame.getContentPane().add(new HeaderPane(Color.black, "基本", 24), BorderLayout.CENTER); mainFrame.getContentPane().add(new HeaderPane(Color.black, "基本", 24), BorderLayout.CENTER);
// mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// mainFrame.pack(); mainFrame.pack();
// mainFrame.setSize(300, 400); mainFrame.setSize(300, 400);
// mainFrame.setVisible(true); mainFrame.setVisible(true);
} }
} }

3
designer_base/src/com/fr/design/gui/UILookAndFeel.java

@ -1,6 +1,5 @@
package com.fr.design.gui; package com.fr.design.gui;
import com.fr.base.BaseUtils;
import com.fr.design.gui.borders.*; import com.fr.design.gui.borders.*;
import com.fr.design.gui.frpane.UIBasicOptionPaneUI; import com.fr.design.gui.frpane.UIBasicOptionPaneUI;
import com.fr.design.gui.ibutton.UIBasicButtonUI; import com.fr.design.gui.ibutton.UIBasicButtonUI;
@ -110,8 +109,6 @@ public class UILookAndFeel extends MetalLookAndFeel {
table.put("RadioButtonMenuItem.border", border); table.put("RadioButtonMenuItem.border", border);
table.put("ToolTip.border", new BorderUIResource(new UIToolTipBorder(true))); table.put("ToolTip.border", new BorderUIResource(new UIToolTipBorder(true)));
table.put("ToolTip.borderInactive", new BorderUIResource(new UIToolTipBorder(false))); table.put("ToolTip.borderInactive", new BorderUIResource(new UIToolTipBorder(false)));
table.put("Tree.expandedIcon", BaseUtils.readIcon("/com/fr/design/images/tree/open.png"));
table.put("Tree.collapsedIcon", BaseUtils.readIcon("/com/fr/design/images/tree/close.png"));
table.put("PopupMenu.border", new UIPopupMenuBorder()); table.put("PopupMenu.border", new UIPopupMenuBorder());
table.put("PopupMenu.foreground", new ColorUIResource(255, 0, 0)); table.put("PopupMenu.foreground", new ColorUIResource(255, 0, 0));
table.put("SplitPane.dividerSize", new Integer(7)); table.put("SplitPane.dividerSize", new Integer(7));

4
designer_base/src/com/fr/design/gui/controlpane/UIControlPane.java

@ -37,6 +37,7 @@ public abstract class UIControlPane extends BasicPane implements UnrepeatedNameH
protected CardLayout cardLayout; protected CardLayout cardLayout;
protected JPanel cardPane; protected JPanel cardPane;
protected BasePlot plot; protected BasePlot plot;
private static final int TOP_TOOLBAR_HEIGHT = 24;
public UIControlPane() { public UIControlPane() {
this.initComponentPane(); this.initComponentPane();
@ -192,11 +193,10 @@ public abstract class UIControlPane extends BasicPane implements UnrepeatedNameH
topToolBar.setLayout(new BorderLayout()); topToolBar.setLayout(new BorderLayout());
ShortCut addItem = addItemShortCut().getShortCut(); ShortCut addItem = addItemShortCut().getShortCut();
addItem.intoJToolBar(topToolBar); addItem.intoJToolBar(topToolBar);
topToolBar.setBorder(BorderFactory.createEmptyBorder(2, 0, 2, 0));
double p = TableLayout.PREFERRED; double p = TableLayout.PREFERRED;
double f = TableLayout.FILL; double f = TableLayout.FILL;
double[] columnSize = { p, f}; double[] columnSize = { p, f};
double[] rowSize = {p}; double[] rowSize = {TOP_TOOLBAR_HEIGHT};
Component[][] components = new Component[][]{ Component[][] components = new Component[][]{
new Component[]{new UILabel(getAddItemText()), topToolBar}, new Component[]{new UILabel(getAddItemText()), topToolBar},
}; };

2
designer_base/src/com/fr/design/gui/controlpane/UIListControlPane.java

@ -6,6 +6,7 @@ import com.fr.base.chart.BasePlot;
import com.fr.design.actions.UpdateAction; import com.fr.design.actions.UpdateAction;
import com.fr.design.actions.core.ActionFactory; import com.fr.design.actions.core.ActionFactory;
import com.fr.design.beans.BasicBeanPane; import com.fr.design.beans.BasicBeanPane;
import com.fr.design.constants.UIConstants;
import com.fr.design.data.tabledata.tabledatapane.GlobalMultiTDTableDataPane; import com.fr.design.data.tabledata.tabledatapane.GlobalMultiTDTableDataPane;
import com.fr.design.data.tabledata.tabledatapane.GlobalTreeTableDataPane; import com.fr.design.data.tabledata.tabledatapane.GlobalTreeTableDataPane;
import com.fr.design.data.tabledata.tabledatapane.MultiTDTableDataPane; import com.fr.design.data.tabledata.tabledatapane.MultiTDTableDataPane;
@ -87,6 +88,7 @@ public abstract class UIListControlPane extends UIControlPane {
protected void initLeftPane(JPanel leftPane) { protected void initLeftPane(JPanel leftPane) {
nameableList = createJNameList(); nameableList = createJNameList();
nameableList.setName(LIST_NAME); nameableList.setName(LIST_NAME);
nameableList.setSelectionBackground(UIConstants.ATTRIBUTE_PRESS);
leftPane.add(new UIScrollPane(nameableList), BorderLayout.CENTER); leftPane.add(new UIScrollPane(nameableList), BorderLayout.CENTER);

35
designer_base/src/com/fr/design/gui/ibutton/UIButtonUI.java

@ -1,27 +1,16 @@
package com.fr.design.gui.ibutton; package com.fr.design.gui.ibutton;
import java.awt.FontMetrics;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Insets;
import java.awt.Rectangle;
import java.awt.RenderingHints;
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.design.constants.UIConstants; import com.fr.design.constants.UIConstants;
import com.fr.design.roleAuthority.ReportAndFSManagePane; import com.fr.design.roleAuthority.ReportAndFSManagePane;
import com.fr.design.utils.gui.GUIPaintUtils;
import com.fr.stable.StringUtils;
import sun.swing.SwingUtilities2; import sun.swing.SwingUtilities2;
import com.fr.stable.StringUtils; import javax.swing.*;
import com.fr.design.utils.gui.GUIPaintUtils; import javax.swing.plaf.basic.BasicButtonUI;
import javax.swing.plaf.basic.BasicHTML;
import javax.swing.text.View;
import java.awt.*;
public class UIButtonUI extends BasicButtonUI { public class UIButtonUI extends BasicButtonUI {
@ -51,11 +40,11 @@ public class UIButtonUI extends BasicButtonUI {
protected void doExtraPainting(UIButton b, Graphics2D g2d, int w, int h, String selectedRoles) { protected void doExtraPainting(UIButton b, Graphics2D g2d, int w, int h, String selectedRoles) {
if (isPressed(b) && b.isPressedPainted()) { if (isPressed(b) && b.isPressedPainted()) {
GUIPaintUtils.fillPressed(g2d, 0, 0, w, h, b.isRoundBorder(), b.getRectDirection(), b.isDoneAuthorityEdited(selectedRoles)); GUIPaintUtils.fillPressed(g2d, 0, 0, w, h, b.isRoundBorder(), b.getRectDirection(), b.isDoneAuthorityEdited(selectedRoles), UIConstants.COMBOBOX_BTN_PRESS);
} else if (isRollOver(b)) { } else if (isRollOver(b)) {
GUIPaintUtils.fillRollOver(g2d, 0, 0, w, h, b.isRoundBorder(), b.getRectDirection(), b.isDoneAuthorityEdited(selectedRoles), b.isPressedPainted()); GUIPaintUtils.fillRollOver(g2d, 0, 0, w, h, b.isRoundBorder(), b.getRectDirection(), b.isDoneAuthorityEdited(selectedRoles), b.isPressedPainted(), UIConstants.COMBOBOX_BTN_ROLLOVER);
} else if (b.isNormalPainted()) { } else if (b.isNormalPainted()) {
GUIPaintUtils.fillNormal(g2d, 0, 0, w, h, b.isRoundBorder(), b.getRectDirection(), b.isDoneAuthorityEdited(selectedRoles), b.isPressedPainted()); GUIPaintUtils.fillNormal(g2d, 0, 0, w, h, b.isRoundBorder(), b.getRectDirection(), b.isDoneAuthorityEdited(selectedRoles), b.isPressedPainted(), UIConstants.COMBOBOX_BTN_NORMAL);
} }
} }
@ -66,7 +55,7 @@ public class UIButtonUI extends BasicButtonUI {
protected boolean isPressed(AbstractButton b) { protected boolean isPressed(AbstractButton b) {
ButtonModel model = b.getModel(); ButtonModel model = b.getModel();
return (model.isArmed() && model.isPressed()) || b.isSelected(); return model.isArmed() && model.isPressed();
} }
private void paintContent(Graphics g, AbstractButton b, String text) { private void paintContent(Graphics g, AbstractButton b, String text) {
@ -127,7 +116,7 @@ public class UIButtonUI extends BasicButtonUI {
return; return;
} }
Icon selectedIcon = null; Icon selectedIcon = null;
/* the fallback icon should be based on the selected state */ /* the fallback icon should be based on the selected state */
if (model.isSelected()) { if (model.isSelected()) {
selectedIcon = (Icon) b.getSelectedIcon(); selectedIcon = (Icon) b.getSelectedIcon();
if (selectedIcon != null) { if (selectedIcon != null) {

2
designer_base/src/com/fr/design/gui/icombobox/UIComboBoxRenderer.java

@ -27,7 +27,7 @@ public class UIComboBoxRenderer extends DefaultListCellRenderer {
cellHasFocus = cellHasFocus && !this.isEnabled(); cellHasFocus = cellHasFocus && !this.isEnabled();
JLabel renderer =(JLabel) super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); JLabel renderer =(JLabel) super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
renderer.setForeground(Color.black); renderer.setForeground(Color.black);
list.setSelectionBackground(UIConstants.FLESH_BLUE); list.setSelectionBackground(UIConstants.COMBOBOX_BTN_PRESS);
list.setSelectionForeground(Color.black); list.setSelectionForeground(Color.black);
renderer.setText(" " + renderer.getText()); renderer.setText(" " + renderer.getText());
return renderer; return renderer;

2
designer_base/src/com/fr/design/gui/icontainer/UIEastResizableContainer.java

@ -308,7 +308,7 @@ public class UIEastResizableContainer extends JPanel {
} }
} }
// g.drawImage(button, 2, ARROW_MARGIN_VERTICAL, 5, toolPaneHeight, null); // g.drawImage(button, 2, ARROW_MARGIN_VERTICAL, 5, toolPaneHeight, null);
g.drawImage(button, 18, 9, 5, 5, null); g.drawImage(button, 18, 7, 5, 10, null);
} }
} }

2
designer_base/src/com/fr/design/gui/icontainer/UIResizableContainer.java

@ -502,7 +502,7 @@ public class UIResizableContainer extends JPanel {
button = UIConstants.DRAG_LEFT_PRESS; button = UIConstants.DRAG_LEFT_PRESS;
} }
} }
g.drawImage(button, 3, ARROW_MARGIN_VERTICAL, 5, 5, null); g.drawImage(button, 3, ARROW_MARGIN_VERTICAL, 5, toolPaneHeight, null);
} else { } else {
g.drawImage(UIConstants.DRAG_BAR, 0, 0, toolPaneHeight, getHeight(), null); g.drawImage(UIConstants.DRAG_BAR, 0, 0, toolPaneHeight, getHeight(), null);
if (containerWidth == toolPaneHeight) { if (containerWidth == toolPaneHeight) {

4
designer_base/src/com/fr/design/gui/itoolbar/UIToolBarUI.java

@ -25,6 +25,8 @@ import com.fr.design.constants.UIConstants;
import com.fr.design.gui.ibutton.UIToolButtonBorder; import com.fr.design.gui.ibutton.UIToolButtonBorder;
import com.fr.design.gui.icheckbox.UICheckBox; import com.fr.design.gui.icheckbox.UICheckBox;
import static com.fr.design.utils.ThemeUtils.BACK_COLOR;
public class UIToolBarUI extends MetalToolBarUI { public class UIToolBarUI extends MetalToolBarUI {
public static final String IS_TOOL_BAR_BUTTON_KEY = "JToolBar.isToolbarButton"; public static final String IS_TOOL_BAR_BUTTON_KEY = "JToolBar.isToolbarButton";
public static final int FLOATABLE_GRIP_SIZE = 8; public static final int FLOATABLE_GRIP_SIZE = 8;
@ -89,7 +91,7 @@ public class UIToolBarUI extends MetalToolBarUI {
*/ */
public void paint(Graphics g, JComponent c) { public void paint(Graphics g, JComponent c) {
Graphics2D g2 = (Graphics2D) g; Graphics2D g2 = (Graphics2D) g;
g2.setColor(UIConstants.TOOLBARUI_BACKGROUND); g2.setColor(BACK_COLOR);
g2.fillRect(0, 0, c.getWidth(), c.getHeight()); g2.fillRect(0, 0, c.getWidth(), c.getHeight());
} }

5
designer_base/src/com/fr/design/gui/style/BackgroundPane.java

@ -33,6 +33,10 @@ public class BackgroundPane extends AbstractBasicStylePane {
protected BackgroundQuickPane[] paneList; protected BackgroundQuickPane[] paneList;
//获取当前面板
protected JPanel currentPane = null;
public BackgroundPane() { public BackgroundPane() {
this.initComponents(); this.initComponents();
} }
@ -141,6 +145,7 @@ public class BackgroundPane extends AbstractBasicStylePane {
if (pane.accept(background)) { if (pane.accept(background)) {
pane.populateBean(background); pane.populateBean(background);
typeComboBox.setSelectedIndex(i); typeComboBox.setSelectedIndex(i);
currentPane = paneList[i];
return; return;
} }
} }

23
designer_base/src/com/fr/design/gui/style/BorderPane.java

@ -16,6 +16,7 @@ import com.fr.design.gui.icombobox.LineComboBox;
import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.ilable.UILabel;
import com.fr.design.layout.TableLayout; import com.fr.design.layout.TableLayout;
import com.fr.design.layout.TableLayoutHelper; import com.fr.design.layout.TableLayoutHelper;
import com.fr.design.mainframe.backgroundpane.ColorBackgroundQuickPane;
import com.fr.design.style.color.NewColorSelectBox; import com.fr.design.style.color.NewColorSelectBox;
import com.fr.design.utils.gui.GUICoreUtils; import com.fr.design.utils.gui.GUICoreUtils;
import com.fr.general.ComparatorUtils; import com.fr.general.ComparatorUtils;
@ -202,12 +203,24 @@ public class BorderPane extends AbstractBasicStylePane implements GlobalNameObse
CellBorderStyle cellBorderStyle = this.update(); CellBorderStyle cellBorderStyle = this.update();
HashSet<String> borderSet = new HashSet<String>(Arrays.asList(BORDERARRAY)); HashSet<String> borderSet = new HashSet<String>(Arrays.asList(BORDERARRAY));
if (borderSet.contains(globalNameListener.getGlobalName())) { if (backgroundPane.currentPane != backgroundPane.paneList[1]){
style = style.deriveBorder(cellBorderStyle.getTopStyle(), cellBorderStyle.getTopColor(), cellBorderStyle.getBottomStyle(), cellBorderStyle.getBottomColor(), if (borderSet.contains(globalNameListener.getGlobalName())) {
cellBorderStyle.getLeftStyle(), cellBorderStyle.getLeftColor(), cellBorderStyle.getRightStyle(), cellBorderStyle.getRightColor()); style = style.deriveBorder(cellBorderStyle.getTopStyle(), cellBorderStyle.getTopColor(), cellBorderStyle.getBottomStyle(), cellBorderStyle.getBottomColor(),
} else { cellBorderStyle.getLeftStyle(), cellBorderStyle.getLeftColor(), cellBorderStyle.getRightStyle(), cellBorderStyle.getRightColor());
style = style.deriveBackground(backgroundPane.update()); style = style.deriveBackground(backgroundPane.update());
} else {
style = style.deriveBackground(backgroundPane.update());
}
}else {
if (borderSet.contains(globalNameListener.getGlobalName()) && !((ColorBackgroundQuickPane) backgroundPane.currentPane).isBackGroundColor()){
style = style.deriveBorder(cellBorderStyle.getTopStyle(), cellBorderStyle.getTopColor(), cellBorderStyle.getBottomStyle(), cellBorderStyle.getBottomColor(),
cellBorderStyle.getLeftStyle(), cellBorderStyle.getLeftColor(), cellBorderStyle.getRightStyle(), cellBorderStyle.getRightColor());
style = style.deriveBackground(backgroundPane.update());
} else {
style = style.deriveBackground(backgroundPane.update());
}
} }
return style; return style;
} }

1
designer_base/src/com/fr/design/mainframe/EastRegionContainerPane.java

@ -852,6 +852,7 @@ 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));
setBackground(UIConstants.POPUP_TITLE_BACKGROUND);
} else { } else {
setCursor(Cursor.getDefaultCursor()); setCursor(Cursor.getDefaultCursor());
} }

7
designer_base/src/com/fr/design/mainframe/backgroundpane/ColorBackgroundQuickPane.java

@ -18,6 +18,7 @@ import java.awt.*;
public class ColorBackgroundQuickPane extends BackgroundQuickPane { public class ColorBackgroundQuickPane extends BackgroundQuickPane {
private NewColorSelectPane detailColorSelectPane; private NewColorSelectPane detailColorSelectPane;
private boolean isBackGroundColor;
public ColorBackgroundQuickPane() { public ColorBackgroundQuickPane() {
this.setLayout(FRGUIPaneFactory.createBorderLayout()); this.setLayout(FRGUIPaneFactory.createBorderLayout());
@ -28,6 +29,7 @@ public class ColorBackgroundQuickPane extends BackgroundQuickPane {
public void populateBean(Background background) { public void populateBean(Background background) {
ColorBackground colorBackgroud = (ColorBackground) background; ColorBackground colorBackgroud = (ColorBackground) background;
isBackGroundColor = false;
this.detailColorSelectPane.setColor(colorBackgroud.getColor()); this.detailColorSelectPane.setColor(colorBackgroud.getColor());
} }
@ -36,6 +38,10 @@ public class ColorBackgroundQuickPane extends BackgroundQuickPane {
return ColorBackground.getInstance(this.detailColorSelectPane.getNotNoneColor()); return ColorBackground.getInstance(this.detailColorSelectPane.getNotNoneColor());
} }
public boolean isBackGroundColor(){
return isBackGroundColor;
}
/** /**
* 给组件登记一个观察者监听事件 * 给组件登记一个观察者监听事件
* *
@ -45,6 +51,7 @@ public class ColorBackgroundQuickPane extends BackgroundQuickPane {
detailColorSelectPane.addChangeListener(new ChangeListener() { detailColorSelectPane.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent e) { public void stateChanged(ChangeEvent e) {
listener.doChange(); listener.doChange();
isBackGroundColor = true;
} }
}); });
} }

84
designer_base/src/com/fr/design/utils/gui/GUIPaintUtils.java

@ -49,23 +49,28 @@ public class GUIPaintUtils {
/** /**
* 正常状态填充 * 正常状态填充
* @param g2d 图形对象 *
* @param x x坐标 * @param g2d 图形对象
* @param y y坐标 * @param x x坐标
* @param width 宽度 * @param y y坐标
* @param height 高度 * @param width 宽度
* @param isRound 是否圆角 * @param height 高度
* @param rectDirection 矩形方向 * @param isRound 是否圆角
* @param rectDirection 矩形方向
* @param isAuthorityEdited 是否权限编辑 * @param isAuthorityEdited 是否权限编辑
* @param isPressedPainted 是否按压画 * @param isPressedPainted 是否按压画
*/ */
public static final void fillNormal(Graphics2D g2d, int x, int y, int width, int height, boolean isRound, int rectDirection, boolean isAuthorityEdited, boolean isPressedPainted) { public static final void fillNormal(Graphics2D g2d, int x, int y, int width, int height, boolean isRound, int rectDirection, boolean isAuthorityEdited, boolean isPressedPainted) {
fillNormal(g2d, x, y, width, height, isRound, rectDirection, isAuthorityEdited, isPressedPainted, UIConstants.ATTRIBUTE_NORMAL);
}
public static final void fillNormal(Graphics2D g2d, int x, int y, int width, int height, boolean isRound, int rectDirection, boolean isAuthorityEdited, boolean isPressedPainted, Color color) {
GradientPaint gp; GradientPaint gp;
if (BaseUtils.isAuthorityEditing() && isAuthorityEdited) { if (BaseUtils.isAuthorityEditing() && isAuthorityEdited) {
gp = new GradientPaint(1, 1, UIConstants.AUTHORITY_BLUE, 1, height - 1, UIConstants.AUTHORITY_DARK_BLUE); gp = new GradientPaint(1, 1, UIConstants.AUTHORITY_BLUE, 1, height - 1, UIConstants.AUTHORITY_DARK_BLUE);
} else if (isPressedPainted) { } else if (isPressedPainted) {
gp = new GradientPaint(1, 1, UIConstants.ATTRIBUTE_NORMAL, 1, height - 1, UIConstants.ATTRIBUTE_NORMAL); gp = new GradientPaint(1, 1, color, 1, height - 1, color);
}else{ } else {
gp = new GradientPaint(1, 1, UIConstants.SHADOW_GREY, 1, height - 1, UIConstants.SHADOW_GREY); gp = new GradientPaint(1, 1, UIConstants.SHADOW_GREY, 1, height - 1, UIConstants.SHADOW_GREY);
} }
@ -74,15 +79,16 @@ public class GUIPaintUtils {
/** /**
* 鼠标悬停状态填充 * 鼠标悬停状态填充
* @param g2d 图形对象 *
* @param x x坐标 * @param g2d 图形对象
* @param y y坐标 * @param x x坐标
* @param width 宽度 * @param y y坐标
* @param height 高度 * @param width 宽度
* @param isRound 是否圆角 * @param height 高度
* @param rectDirection 矩形方向 * @param isRound 是否圆角
* @param rectDirection 矩形方向
* @param isAuthorityEdited 是否权限编辑 * @param isAuthorityEdited 是否权限编辑
* @param isPressedPainted 是否按压画 * @param isPressedPainted 是否按压画
*/ */
public static final void fillRollOver(Graphics2D g2d, int x, int y, int width, int height, boolean isRound, int rectDirection, boolean isAuthorityEdited, boolean isPressedPainted) { public static final void fillRollOver(Graphics2D g2d, int x, int y, int width, int height, boolean isRound, int rectDirection, boolean isAuthorityEdited, boolean isPressedPainted) {
fillRollOver(g2d, x, y, width, height, isRound, rectDirection, isAuthorityEdited, isPressedPainted, null); fillRollOver(g2d, x, y, width, height, isRound, rectDirection, isAuthorityEdited, isPressedPainted, null);
@ -104,15 +110,15 @@ public class GUIPaintUtils {
/** /**
* 按压状态填充 * 按压状态填充
* @param g2d 图形对象
* @param x x坐标
* @param y y坐标
* @param width 宽度
* @param height 高度
* @param isRound 是否圆角
* @param rectDirection 矩形方向
* @param isAuthorityEdited 是否权限编辑
* *
* @param g2d 图形对象
* @param x x坐标
* @param y y坐标
* @param width 宽度
* @param height 高度
* @param isRound 是否圆角
* @param rectDirection 矩形方向
* @param isAuthorityEdited 是否权限编辑
*/ */
public static final void fillPressed(Graphics2D g2d, int x, int y, int width, int height, boolean isRound, int rectDirection, boolean isAuthorityEdited) { public static final void fillPressed(Graphics2D g2d, int x, int y, int width, int height, boolean isRound, int rectDirection, boolean isAuthorityEdited) {
fillPressed(g2d, x, y, width, height, isRound, rectDirection, isAuthorityEdited, null); fillPressed(g2d, x, y, width, height, isRound, rectDirection, isAuthorityEdited, null);
@ -147,17 +153,19 @@ public class GUIPaintUtils {
g2d.setColor(oldColor); g2d.setColor(oldColor);
} }
/** /**
* 自定义画笔填充 * 自定义画笔填充
* @param g2d 图形对象 *
* @param x x坐标 * @param g2d 图形对象
* @param y y坐标 * @param x x坐标
* @param width 宽度 * @param y y坐标
* @param height 高度 * @param width 宽度
* @param isRound 是否圆角 * @param height 高度
* @param rectDirection 矩形方向 * @param isRound 是否圆角
* @param paint 画笔 * @param rectDirection 矩形方向
* @param arc 圆角尺寸 * @param paint 画笔
* @param arc 圆角尺寸
*/ */
public static final void fillPaint(Graphics2D g2d, int x, int y, int width, int height, boolean isRound, int rectDirection, Paint paint, int arc) { public static final void fillPaint(Graphics2D g2d, int x, int y, int width, int height, boolean isRound, int rectDirection, Paint paint, int arc) {
Paint oldPaint = g2d.getPaint(); Paint oldPaint = g2d.getPaint();
@ -188,9 +196,9 @@ public class GUIPaintUtils {
public static final void paintBorderShadow(Graphics2D g2, int shadowWidth, Shape shape, Color outColor, Color inColor) { public static final void paintBorderShadow(Graphics2D g2, int shadowWidth, Shape shape, Color outColor, Color inColor) {
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g2.setColor(outColor); g2.setColor(outColor);
g2.setStroke(new BasicStroke(shadowWidth)); g2.setStroke(new BasicStroke(shadowWidth));
g2.draw(shape); g2.draw(shape);
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_OFF); g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_OFF);
} }

116
designer_base/src/com/fr/design/widget/component/UIComboBoxNoArrow.java

@ -0,0 +1,116 @@
package com.fr.design.widget.component;
import com.fr.design.constants.UIConstants;
import com.fr.design.gui.ibutton.UIButton;
import com.fr.design.gui.icombobox.UIComboBox;
import com.fr.design.gui.icombobox.UIComboBoxEditor;
import com.fr.stable.StringUtils;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import javax.swing.plaf.basic.BasicComboBoxUI;
import java.awt.*;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
/**
* Created by kerry on 2017/9/14.
*/
public class UIComboBoxNoArrow extends UIComboBox {
public UIComboBoxNoArrow(Object[] items) {
super(items);
init();
}
public UIComboBoxNoArrow() {
}
public void init() {
this.setEditable(true);
this.setEditor(new ComboBoxNoArrowEditor(this));
this.setUI(new ComboBoxNoArrowUI());
}
public class ComboBoxNoArrowUI extends BasicComboBoxUI {
@Override
protected UIButton createArrowButton() {
arrowButton = new UIButton(UIConstants.ARROW_DOWN_ICON) {
@Override
public boolean shouldResponseChangeListener() {
return false;
}
@Override
public Insets getInsets() {
return new Insets(0, 0, 0, 0);
}
};
squareButton = false;
arrowButton.setPreferredSize(new Dimension(0, 0));
arrowButton.setVisible(false);
return (UIButton) arrowButton;
}
}
public class ComboBoxNoArrowEditor extends UIComboBoxEditor implements DocumentListener {
private volatile boolean setting = false;
private UIComboBoxNoArrow comboBox;
private Object item;
public ComboBoxNoArrowEditor(UIComboBoxNoArrow comboBox) {
super();
this.comboBox = comboBox;
textField.getDocument().addDocumentListener(this);
textField.addFocusListener(new FocusListener() {
@Override
public void focusGained(FocusEvent e) {
changeHandler();
}
@Override
public void focusLost(FocusEvent e) {
}
});
}
public void setItem(Object item) {
this.item = item;
this.setting = true;
textField.setText((item == null) ? StringUtils.EMPTY : item.toString());
this.setting = false;
}
public Object getItem() {
return this.item;
}
public void insertUpdate(DocumentEvent e) {
changeHandler();
}
public void removeUpdate(DocumentEvent e) {
changeHandler();
}
public void changedUpdate(DocumentEvent e) {
changeHandler();
}
protected void changeHandler() {
if (setting) {
return;
}
comboBox.setPopupVisible(true);
this.item = textField.getText();
this.getEditorComponent().requestFocus();
}
}
}

7
designer_base/src/com/fr/start/BaseDesigner.java

@ -64,7 +64,9 @@ public abstract class BaseDesigner extends ToolBarMenuDock {
setDebugEnv(); setDebugEnv();
} }
RestartHelper.deleteRecordFilesWhenStart(); RestartHelper.deleteRecordFilesWhenStart();
//初始化插件引擎
PluginStartup.start();
SiteCenter.getInstance(); SiteCenter.getInstance();
DesignUtils.setPort(getStartPort()); DesignUtils.setPort(getStartPort());
@ -95,8 +97,7 @@ public abstract class BaseDesigner extends ToolBarMenuDock {
DesignUtils.initLookAndFeel(); DesignUtils.initLookAndFeel();
DesignUtils.creatListeningServer(getStartPort(), startFileSuffix()); DesignUtils.creatListeningServer(getStartPort(), startFileSuffix());
//初始化插件引擎
PluginStartup.start();
// 初始化Log Handler // 初始化Log Handler
DesignerEnvManager.loadLogSetting(); DesignerEnvManager.loadLogSetting();
DesignerFrame df = createDesignerFrame(); DesignerFrame df = createDesignerFrame();

72
designer_base/src/com/fr/start/SplashPane.java

@ -1,12 +1,11 @@
/** /**
* *
*/ */
package com.fr.start; package com.fr.start;
import java.awt.Graphics; import java.awt.Graphics;
import java.awt.Graphics2D; import java.awt.Graphics2D;
import java.awt.Image; import java.awt.Image;
import java.awt.image.BufferedImage;
import javax.swing.ImageIcon; import javax.swing.ImageIcon;
import javax.swing.JPanel; import javax.swing.JPanel;
@ -19,22 +18,20 @@ import com.fr.stable.CoreGraphHelper;
/** /**
* @author neil * @author neil
*
* @date: 2015-3-13-上午10:20:43 * @date: 2015-3-13-上午10:20:43
*/ */
public class SplashPane extends JPanel{ public class SplashPane extends JPanel {
/**
* 获取已经绘制完毕的启动画面
*
* @return 绘制完毕的启动画面
*/
public Image getSplashImage() {
Image image = createSplashBackground();
return CoreGraphHelper.toBufferedImage(image);
}
/**
* 获取已经绘制完毕的启动画面
*
* @return 绘制完毕的启动画面
*
*/
public BufferedImage getSplashImage() {
Image image = createSplashBackground();
return CoreGraphHelper.toBufferedImage(image);
}
protected void paintComponent(Graphics g) { protected void paintComponent(Graphics g) {
super.paintComponent(g); super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g; Graphics2D g2d = (Graphics2D) g;
@ -44,35 +41,32 @@ public class SplashPane extends JPanel{
} }
/** /**
* 设置在启动过程中, 动态改变的文本, 当前启动的模块信息 * 设置在启动过程中, 动态改变的文本, 当前启动的模块信息
* *
* @param text 指定的文本 * @param text 指定的文本
* */
*/ public void setShowText(String text) {
public void setShowText(String text) {
}
}
/** /**
* 创建启动画面的背景图片 * 创建启动画面的背景图片
* *
* @return 背景图片 * @return 背景图片
* */
*/ public Image createSplashBackground() {
public Image createSplashBackground() {
if (GeneralContext.isChineseEnv()) { if (GeneralContext.isChineseEnv()) {
return BaseUtils.readImage("/com/fr/base/images/oem/splash_chinese.png"); return BaseUtils.readImage("/com/fr/base/images/oem/splash_chinese.png");
} }
return BaseUtils.readImage("/com/fr/base/images/oem/splash_english.png"); return BaseUtils.readImage("/com/fr/base/images/oem/splash_english.png");
} }
/** /**
* 窗口关闭后取消定时获取模块信息的timer * 窗口关闭后取消定时获取模块信息的timer
* */
*/ public void releaseTimer() {
public void releaseTimer() {
}
}
} }

6
designer_base/src/com/fr/start/SplashWindow.java

@ -14,13 +14,14 @@ import com.fr.design.gui.ilable.UILabel;
import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.layout.FRGUIPaneFactory;
import com.fr.design.utils.gui.GUICoreUtils; import com.fr.design.utils.gui.GUICoreUtils;
import com.fr.stable.OperatingSystem; import com.fr.stable.OperatingSystem;
import com.sun.awt.AWTUtilities;
public class SplashWindow extends JFrame { public class SplashWindow extends JFrame {
private SplashPane splash = null; private SplashPane splash = null;
@SuppressWarnings("LeakingThisInConstructor") @SuppressWarnings("LeakingThisInConstructor")
public SplashWindow(SplashPane splashPane) { public SplashWindow(SplashPane splashPane) {
// alex:必须设置这个属性为true,才可以用透明背景 // alex:必须设置这个属性为true,才可以用透明背景
System.setProperty("sun.java2d.noddraw", "true"); System.setProperty("sun.java2d.noddraw", "true");
@ -45,7 +46,8 @@ public class SplashWindow extends JFrame {
this.setAlwaysOnTop(false); this.setAlwaysOnTop(false);
this.setUndecorated(true); this.setUndecorated(true);
AWTUtilities.setWindowOpaque(this, false);
//使窗体背景透明 //使窗体背景透明
if (OperatingSystem.isWindows()) { if (OperatingSystem.isWindows()) {
this.setBackground(new Color(0,0,0,0)); this.setBackground(new Color(0,0,0,0));

8
designer_form/src/com/fr/design/designer/creator/XBorderStyleWidgetCreator.java

@ -148,5 +148,13 @@ public class XBorderStyleWidgetCreator extends XWidgetCreator{
public boolean supportSetVisibleOrEnable(){ public boolean supportSetVisibleOrEnable(){
return false; return false;
} }
/**
* data属性改变触发其他操作
*
*/
public void firePropertyChange(){
initStyle();
}
} }

9
designer_form/src/com/fr/design/mainframe/FormHierarchyTreePane.java

@ -92,6 +92,7 @@ public class FormHierarchyTreePane extends FormDockView implements HierarchyTree
public void refreshDockingView() { public void refreshDockingView() {
FormDesigner formDesigner = this.getEditingFormDesigner(); FormDesigner formDesigner = this.getEditingFormDesigner();
removeAll(); removeAll();
changeVarNameAction = null;
if(this.componentTree != null) { if(this.componentTree != null) {
this.componentTree.removeAll(); this.componentTree.removeAll();
} }
@ -156,10 +157,10 @@ public class FormHierarchyTreePane extends FormDockView implements HierarchyTree
protected ShortCut4JControlPane[] createShortcuts() { protected ShortCut4JControlPane[] createShortcuts() {
ArrayList<ShortCut4JControlPane> shortCutList = new ArrayList<>(); ArrayList<ShortCut4JControlPane> shortCutList = new ArrayList<>();
FormDesigner designer = getEditingFormDesigner(); FormDesigner designer = getEditingFormDesigner();
if (changeVarNameAction == null) { if (changeVarNameAction == null) {
changeVarNameAction = new ChangeNameAction(designer); changeVarNameAction = new ChangeNameAction(designer);
} }
shortCutList.add(new WidgetEnableShortCut(changeVarNameAction)); shortCutList.add(new WidgetEnableShortCut(changeVarNameAction));
for (Action action : designer.getActions()) { for (Action action : designer.getActions()) {
shortCutList.add(new WidgetEnableShortCut((UndoableAction)action)); shortCutList.add(new WidgetEnableShortCut((UndoableAction)action));
} }

11
designer_form/src/com/fr/design/mainframe/widget/ui/FormWidgetCardPane.java

@ -8,7 +8,6 @@ import com.fr.design.foldablepane.UIExpandablePane;
import com.fr.design.gui.frpane.AbstractAttrNoScrollPane; import com.fr.design.gui.frpane.AbstractAttrNoScrollPane;
import com.fr.design.gui.frpane.AttributeChangeListener; import com.fr.design.gui.frpane.AttributeChangeListener;
import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.layout.FRGUIPaneFactory;
import com.fr.design.mainframe.DesignerContext;
import com.fr.design.mainframe.FormDesigner; import com.fr.design.mainframe.FormDesigner;
import com.fr.design.widget.DataModify; import com.fr.design.widget.DataModify;
import com.fr.design.widget.Operator; import com.fr.design.widget.Operator;
@ -152,8 +151,7 @@ public class FormWidgetCardPane extends AbstractAttrNoScrollPane {
private void initDefinePane() { private void initDefinePane() {
currentEditorDefinePane = null; currentEditorDefinePane = null;
boolean dedicateLayout = xCreator.acceptType(XWScaleLayout.class) && xCreator.getComponentCount() > 0 && ((XCreator) xCreator.getComponent(0)).shouldScaleCreator() || xCreator.acceptType(XWTitleLayout.class); XCreator creator = getXCreatorDedicated();
XCreator creator = dedicateLayout ? (XCreator) xCreator.getComponent(0) : xCreator;
FormWidgetDefinePaneFactoryBase.RN rn = FormWidgetDefinePaneFactoryBase.createWidgetDefinePane(creator, creator.toData(), new Operator() { FormWidgetDefinePaneFactoryBase.RN rn = FormWidgetDefinePaneFactoryBase.createWidgetDefinePane(creator, creator.toData(), new Operator() {
@Override @Override
public void did(DataCreatorUI ui, String cardName) { public void did(DataCreatorUI ui, String cardName) {
@ -168,6 +166,10 @@ public class FormWidgetCardPane extends AbstractAttrNoScrollPane {
currentEditorDefinePane = definePane; currentEditorDefinePane = definePane;
} }
private XCreator getXCreatorDedicated(){
boolean dedicateLayout = xCreator.acceptType(XWScaleLayout.class) && xCreator.getComponentCount() > 0 && ((XCreator) xCreator.getComponent(0)).shouldScaleCreator() || xCreator.acceptType(XWTitleLayout.class);
return dedicateLayout ? (XCreator) xCreator.getComponent(0) : xCreator;
}
@Override @Override
public String title4PopupWindow() { public String title4PopupWindow() {
@ -217,7 +219,8 @@ public class FormWidgetCardPane extends AbstractAttrNoScrollPane {
} }
public void fireValueChanged() { public void fireValueChanged() {
xCreator.firePropertyChange(); XCreator creator = getXCreatorDedicated();
creator.firePropertyChange();
designer.fireTargetModified(); designer.fireTargetModified();
designer.refreshDesignerUI(); designer.refreshDesignerUI();
} }

5
designer_form/src/com/fr/design/widget/ui/designer/DateEditorDefinePane.java

@ -11,6 +11,7 @@ import com.fr.design.layout.FRGUIPaneFactory;
import com.fr.design.layout.TableLayout; import com.fr.design.layout.TableLayout;
import com.fr.design.layout.TableLayoutHelper; import com.fr.design.layout.TableLayoutHelper;
import com.fr.design.widget.component.DateValuePane; import com.fr.design.widget.component.DateValuePane;
import com.fr.design.widget.component.UIComboBoxNoArrow;
import com.fr.design.widget.ui.designer.component.FormWidgetValuePane; import com.fr.design.widget.ui.designer.component.FormWidgetValuePane;
import com.fr.form.ui.DateEditor; import com.fr.form.ui.DateEditor;
import com.fr.general.DateUtils; import com.fr.general.DateUtils;
@ -101,8 +102,8 @@ public class DateEditorDefinePane extends DirectWriteEditorDefinePane<DateEditor
private JPanel createFormatHead(){ private JPanel createFormatHead(){
String[] dateArray = FormatField.getInstance().getFormatArray(FormatField.FormatContents.DATE); String[] dateArray = FormatField.getInstance().getFormatArray(FormatField.FormatContents.DATE);
String[] timeArray = FormatField.getInstance().getFormatArray(FormatField.FormatContents.TIME); String[] timeArray = FormatField.getInstance().getFormatArray(FormatField.FormatContents.TIME);
final UIComboBox dateFormatComboBox = new UIComboBox(dateArray); final UIComboBox dateFormatComboBox = new UIComboBoxNoArrow(dateArray);
final UIComboBox timeFormatComboBox = new UIComboBox(timeArray); final UIComboBox timeFormatComboBox = new UIComboBoxNoArrow(timeArray);
dateFormatComboBox.addActionListener(new ActionListener(){ dateFormatComboBox.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){ public void actionPerformed(ActionEvent e){
refreshPreviewLabel(); refreshPreviewLabel();

Loading…
Cancel
Save