Browse Source

Merge pull request #2029 in DESIGN/design from release/10.0 to bugfix/10.0

* commit 'a393cb9c227d23dc819a4cce552766955cf586b9':
  CHART-14924 & CHART-14919 更换icon
  CHART-14990 热力地图面板问题
  CHART-14979 删除自动数据点提示面板
  CHART-14730 && CHART-14731 && CHART-14912 && CHART-14897 bugfix
  还原删除文件
  代码修改
  REPORT-36404 远程-服务器断开后设计器未弹出工作目录选择框
  代码修改
  代码修改
  代码调整
  单元测试修改
  冲突修复
  提交代码
  提交
  代码提交
  REPORT-36778 【配合平台】版本号规范FR适配任务
  REPORT-31758  决策报表设计面板允许进行缩放
bugfix/10.0
superman 4 years ago
parent
commit
c7750e8605
  1. 2
      designer-base/src/main/java/com/fr/design/EnvChangeEntrance.java
  2. 17
      designer-base/src/main/java/com/fr/design/actions/help/AboutPane.java
  3. 126
      designer-base/src/main/java/com/fr/design/mainframe/JFormSliderPane.java
  4. 5
      designer-base/src/main/java/com/fr/design/update/actions/RecoverForDesigner.java
  5. 8
      designer-base/src/main/java/com/fr/design/update/ui/dialog/UpdateMainDialog.java
  6. 7
      designer-base/src/main/java/com/fr/env/CheckServiceDialog.java
  7. 32
      designer-base/src/main/java/com/fr/env/RemoteEnvPane.java
  8. 12
      designer-base/src/test/java/com/fr/design/mainframe/JFormSliderPaneTest.java
  9. 20
      designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/data/table/SeriesTypeUseComboxPane.java
  10. 8
      designer-chart/src/main/java/com/fr/van/chart/box/BoxIndependentVanChartInterface.java
  11. 2
      designer-chart/src/main/java/com/fr/van/chart/designer/other/VanChartInteractivePane.java
  12. 2
      designer-chart/src/main/java/com/fr/van/chart/heatmap/designer/style/VanChartHeatMapSeriesPane.java
  13. 16
      designer-chart/src/main/java/com/fr/van/chart/map/VanChartMapSeriesPane.java
  14. 3
      designer-chart/src/main/java/com/fr/van/chart/map/designer/other/condition/pane/VanChartBubblePointMapConditionPane.java
  15. 3
      designer-chart/src/main/java/com/fr/van/chart/map/designer/other/condition/pane/VanChartCommonPointMapConditionPane.java
  16. 3
      designer-chart/src/main/java/com/fr/van/chart/map/designer/other/condition/pane/VanChartDefaultPointMapConditionPane.java
  17. 3
      designer-chart/src/main/java/com/fr/van/chart/map/designer/other/condition/pane/VanChartImagePointMapConditionPane.java
  18. 2
      designer-chart/src/main/java/com/fr/van/chart/map/designer/other/condition/pane/VanChartLineMapConditionPane.java
  19. 2
      designer-chart/src/main/java/com/fr/van/chart/map/designer/other/condition/pane/VanChartMapConditionPane.java
  20. 12
      designer-chart/src/main/java/com/fr/van/chart/structure/desinger/data/StructurePlotReportDataContentPane.java
  21. 16
      designer-chart/src/main/java/com/fr/van/chart/structure/desinger/data/StructurePlotTableDataContentPane.java
  22. BIN
      designer-chart/src/main/resources/com/fr/design/images/form/toolbar/box.png
  23. BIN
      designer-chart/src/main/resources/com/fr/van/chart/box.images/box.png
  24. 9
      designer-form/src/main/java/com/fr/design/designer/beans/adapters/layout/FRBorderLayoutAdapter.java
  25. 4
      designer-form/src/main/java/com/fr/design/designer/beans/models/AddingModel.java
  26. 4
      designer-form/src/main/java/com/fr/design/designer/beans/models/SelectionModel.java
  27. 23
      designer-form/src/main/java/com/fr/design/designer/creator/XButton.java
  28. 9
      designer-form/src/main/java/com/fr/design/designer/creator/XCreator.java
  29. 6
      designer-form/src/main/java/com/fr/design/designer/creator/XLabel.java
  30. 4
      designer-form/src/main/java/com/fr/design/designer/creator/XTextArea.java
  31. 4
      designer-form/src/main/java/com/fr/design/designer/creator/XTextEditor.java
  32. 16
      designer-form/src/main/java/com/fr/design/designer/creator/XWAbsoluteLayout.java
  33. 40
      designer-form/src/main/java/com/fr/design/designer/creator/XWBorderLayout.java
  34. 72
      designer-form/src/main/java/com/fr/design/designer/creator/XWFitLayout.java
  35. 6
      designer-form/src/main/java/com/fr/design/designer/creator/cardlayout/XCardSwitchButton.java
  36. 2
      designer-form/src/main/java/com/fr/design/designer/creator/cardlayout/XWCardTagLayout.java
  37. 13
      designer-form/src/main/java/com/fr/design/designer/creator/cardlayout/XWTabFitLayout.java
  38. 32
      designer-form/src/main/java/com/fr/design/mainframe/EditingMouseListener.java
  39. 142
      designer-form/src/main/java/com/fr/design/mainframe/FormArea.java
  40. 6
      designer-form/src/main/java/com/fr/design/mainframe/FormCreatorDropTarget.java
  41. 67
      designer-form/src/main/java/com/fr/design/mainframe/FormDesigner.java
  42. 38
      designer-form/src/main/java/com/fr/design/mainframe/FormDesignerUI.java
  43. 5
      designer-form/src/main/java/com/fr/design/mainframe/FormSelection.java
  44. 17
      designer-form/src/main/java/com/fr/design/widget/ui/designer/component/WidgetAbsoluteBoundPane.java
  45. 28
      designer-form/src/main/java/com/fr/design/widget/ui/designer/component/WidgetBoundPane.java
  46. 24
      designer-form/src/main/java/com/fr/design/widget/ui/designer/component/WidgetCardTagBoundPane.java
  47. 28
      designer-realize/src/main/java/com/fr/design/mainframe/ReportComponentComposite.java
  48. 4
      designer-realize/src/main/java/com/fr/design/mainframe/WorkSheetDesigner.java
  49. 25
      designer-realize/src/main/java/com/fr/design/mainframe/form/FormReportComponentComposite.java
  50. 1
      designer-realize/src/main/java/com/fr/grid/GridColumn.java
  51. 3
      designer-realize/src/main/java/com/fr/grid/GridMouseAdapter.java
  52. 6
      designer-realize/src/main/java/com/fr/grid/GridUtils.java
  53. 9
      designer-realize/src/main/java/com/fr/poly/PolyDesigner.java

2
designer-base/src/main/java/com/fr/design/EnvChangeEntrance.java

@ -236,7 +236,7 @@ public class EnvChangeEntrance {
//说明版本一致,仅做日志记录 //说明版本一致,仅做日志记录
FineLoggerFactory.getLogger().info("Remote Designer version consistency"); FineLoggerFactory.getLogger().info("Remote Designer version consistency");
} else { } else {
localBranch = formatBranch(localBranch); localBranch = GeneralUtils.getVersion();
remoteBranch = formatBranch(remoteBranch); remoteBranch = formatBranch(remoteBranch);
Set<Class> noExistServiceSet = getNoExistServiceSet(connectionInfo); Set<Class> noExistServiceSet = getNoExistServiceSet(connectionInfo);
StringBuilder textBuilder = new StringBuilder(); StringBuilder textBuilder = new StringBuilder();

17
designer-base/src/main/java/com/fr/design/actions/help/AboutPane.java

@ -11,8 +11,10 @@ import com.fr.design.gui.ilable.BoldFontTextLabel;
import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.ilable.UILabel;
import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.layout.FRGUIPaneFactory;
import com.fr.general.CloudCenter; import com.fr.general.CloudCenter;
import com.fr.general.ComparatorUtils;
import com.fr.general.GeneralContext; import com.fr.general.GeneralContext;
import com.fr.general.GeneralUtils; import com.fr.general.GeneralUtils;
import com.fr.locale.InterProviderFactory;
import com.fr.stable.ProductConstants; import com.fr.stable.ProductConstants;
import com.fr.stable.StringUtils; import com.fr.stable.StringUtils;
import com.fr.stable.bridge.StableFactory; import com.fr.stable.bridge.StableFactory;
@ -36,12 +38,14 @@ public class AboutPane extends JPanel {
private static final String BUILD_PREFIX = " "; private static final String BUILD_PREFIX = " ";
private static final String COMPANY_TELEPHONE = CloudCenter.getInstance().acquireUrlByKind("help.compNo"); private static final String COMPANY_TELEPHONE = CloudCenter.getInstance().acquireUrlByKind("help.compNo");
private static final String PRESIDENT_PHONE = CloudCenter.getInstance().acquireUrlByKind("help.PNo"); private static final String PRESIDENT_PHONE = CloudCenter.getInstance().acquireUrlByKind("help.PNo");
private static final String LEFT_BRACKET = "(";
private static final String RIGHT_BRACKET = ")";
private int maxWidth; private int maxWidth;
public AboutPane() { public AboutPane() {
this.setLayout(FRGUIPaneFactory.createBorderLayout()); this.setLayout(FRGUIPaneFactory.createBorderLayout());
this.maxWidth = GraphHelper.getWidth(getBuildTitle() + GeneralUtils.readFullBuildNO() + this.maxWidth = GraphHelper.getWidth(getBuildTitle() + getVersionBuildNO() +
com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Copy_Build_NO") + com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Copy_Build_NO") +
com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Copy_Build_NO_OK")); com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Copy_Build_NO_OK"));
//center panel //center panel
@ -53,7 +57,7 @@ public class AboutPane extends JPanel {
BoxCenterAlignmentCopyablePane buildCopyPane = new BoxCenterAlignmentCopyablePane( BoxCenterAlignmentCopyablePane buildCopyPane = new BoxCenterAlignmentCopyablePane(
getBuildTitle(), getBuildTitle(),
GeneralUtils.readFullBuildNO(), getVersionBuildNO(),
new String[]{ new String[]{
com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Copy_Build_NO"), com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Copy_Build_NO"),
com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Copy_Build_NO_OK") com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Copy_Build_NO_OK")
@ -95,6 +99,15 @@ public class AboutPane extends JPanel {
} }
} }
public String getVersionBuildNO() {
String version = GeneralUtils.getVersion();
String build = GeneralUtils.readFullBuildNO();
String notInstalledVersion = InterProviderFactory.getProvider().getLocText("Fine-Core_Basic_About_No_Build");
if (ComparatorUtils.equals(notInstalledVersion, build))
return notInstalledVersion;
return version + LEFT_BRACKET + build + RIGHT_BRACKET;
}
@Override @Override
public Dimension getPreferredSize() { public Dimension getPreferredSize() {
return new Dimension(this.maxWidth, super.getPreferredSize().height); return new Dimension(this.maxWidth, super.getPreferredSize().height);

126
designer-base/src/main/java/com/fr/design/mainframe/JFormSliderPane.java

@ -2,24 +2,31 @@ package com.fr.design.mainframe;
import com.fr.base.BaseUtils; import com.fr.base.BaseUtils;
import com.fr.design.gui.ibutton.UIButton; import com.fr.design.gui.ibutton.UIButton;
import com.fr.design.gui.ilable.UILabel;
import com.fr.design.gui.islider.UISlider; import com.fr.design.gui.islider.UISlider;
import com.fr.design.gui.itextfield.UITextField; import com.fr.design.gui.itextfield.UINumberField;
import com.fr.design.utils.gui.GUICoreUtils; import com.fr.design.utils.gui.GUICoreUtils;
import javax.swing.BorderFactory;
import javax.swing.JFrame; import javax.swing.JFrame;
import javax.swing.JPanel; import javax.swing.JPanel;
import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener; import javax.swing.event.ChangeListener;
import javax.swing.text.AttributeSet; import javax.swing.plaf.basic.BasicSliderUI;
import javax.swing.text.BadLocationException;
import javax.swing.text.PlainDocument;
import java.awt.BorderLayout; import java.awt.BorderLayout;
import java.awt.Color; import java.awt.Color;
import java.awt.Dimension; import java.awt.Dimension;
import java.awt.EventQueue; import java.awt.EventQueue;
import java.awt.FlowLayout; import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.Point; import java.awt.Point;
import java.awt.Rectangle;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; import java.awt.event.ActionListener;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import java.awt.event.KeyEvent; import java.awt.event.KeyEvent;
import java.awt.event.KeyListener; import java.awt.event.KeyListener;
import java.awt.event.MouseEvent; import java.awt.event.MouseEvent;
@ -29,6 +36,7 @@ import java.math.BigDecimal;
* Created by MoMeak on 2017/7/13. * Created by MoMeak on 2017/7/13.
*/ */
public class JFormSliderPane extends JPanel { public class JFormSliderPane extends JPanel {
public static final Image APPFIT_V0 = BaseUtils.readImage("com/fr/design/images/control/icon_thumb_normal.png");
private static final double ONEPOINTEIGHT = 1.8; private static final double ONEPOINTEIGHT = 1.8;
private static final int SIX = 6; private static final int SIX = 6;
@ -37,14 +45,13 @@ public class JFormSliderPane extends JPanel {
private static final int HUNDRED = 100; private static final int HUNDRED = 100;
private static final int TWO_HUNDRED = 200; private static final int TWO_HUNDRED = 200;
private static final int FOUR_HUNDRED = 400; private static final int FOUR_HUNDRED = 400;
private static final int SHOWVALBUTTON_WIDTH = 40; private static final int SHOWVALBUTTON_WIDTH = 35;
private static final int SHOWVALBUTTON_HEIGHTH = 20; private static final int SHOWVALBUTTON_HEIGHTH = 20;
private static final String SUFFIX = "%"; private static final String SUFFIX = "%";
private static final String REGEX = "[\\d%]*";
private static final int TOOLTIP_Y = 30; private static final int TOOLTIP_Y = 30;
private static final Color BACK_COLOR = new Color(245, 245, 247); private static final Color BACK_COLOR = new Color(245, 245, 247);
public int showValue = 100; public int showValue = 100;
private UITextField showValField; private UINumberField showValField;
private UISlider slider; private UISlider slider;
private int times; private int times;
private int sliderValue; private int sliderValue;
@ -64,6 +71,9 @@ public class JFormSliderPane extends JPanel {
panel.add(slider); panel.add(slider);
panel.add(upButton); panel.add(upButton);
panel.add(showValField); panel.add(showValField);
UILabel uiLabel = new UILabel(SUFFIX);
uiLabel.setBorder(BorderFactory.createEmptyBorder(0, 4, 0, 4));
panel.add(uiLabel);
panel.setBackground(BACK_COLOR); panel.setBackground(BACK_COLOR);
this.add(panel, BorderLayout.NORTH); this.add(panel, BorderLayout.NORTH);
} }
@ -112,8 +122,8 @@ public class JFormSliderPane extends JPanel {
} }
private void initShowValField() { private void initShowValField() {
showValField = new UITextField(showValue + SUFFIX); showValField = new UINumberField();
showValField.setBorderPainted(false); showValField.setValue(showValue);
showValField.setPreferredSize(new Dimension(SHOWVALBUTTON_WIDTH, SHOWVALBUTTON_HEIGHTH)); showValField.setPreferredSize(new Dimension(SHOWVALBUTTON_WIDTH, SHOWVALBUTTON_HEIGHTH));
showValField.addKeyListener(new KeyListener() { showValField.addKeyListener(new KeyListener() {
@Override @Override
@ -131,27 +141,28 @@ public class JFormSliderPane extends JPanel {
int code = evt.getKeyCode(); int code = evt.getKeyCode();
if (code == KeyEvent.VK_ENTER) { if (code == KeyEvent.VK_ENTER) {
showValue = parseInputValue(showValField.getText()); showValFieldChange((int) showValField.getValue());
showValField.setText(showValue + SUFFIX);
showValFieldChange();
} }
} }
}); });
showValField.setDocument(new PlainDocument() { showValField.addFocusListener(new FocusListener() {
@Override @Override
public void insertString(int offset, String s, AttributeSet a) throws BadLocationException { public void focusGained(FocusEvent e) {
if (!s.matches(REGEX)) {
return;
} }
super.insertString(offset, s, a);
@Override
public void focusLost(FocusEvent e) {
showValFieldChange((int) showValField.getValue());
} }
}); });
} }
private void showValFieldChange() {
private void showValFieldChange(int value) {
isButtonOrIsTxt = true; isButtonOrIsTxt = true;
showValue = getPreferredValue(showValue); showValue = getPreferredValue(value);
refreshShowValueFieldText(); refreshShowValueFieldText();
refreshSlider(); refreshSlider();
} }
@ -167,22 +178,10 @@ public class JFormSliderPane extends JPanel {
} }
private void refreshShowValueFieldText(){ private void refreshShowValueFieldText(){
showValField.setText(showValue + SUFFIX); showValField.setValue(showValue);
setAdjustButtonStatus();
} }
private int parseInputValue(String text){
if (text.endsWith(SUFFIX)){
text = text.substring(0, text.length() -1);
}
try{
return Integer.parseInt(text);
}catch (NumberFormatException e){
return HUNDRED;
}
}
//定义一个监听器,用于监听所有滑动条 //定义一个监听器,用于监听所有滑动条
private ChangeListener listener = new ChangeListener() { private ChangeListener listener = new ChangeListener() {
public void stateChanged(ChangeEvent event) { public void stateChanged(ChangeEvent event) {
@ -207,6 +206,11 @@ public class JFormSliderPane extends JPanel {
slider.setValue(calSliderValue(showValue)); slider.setValue(calSliderValue(showValue));
} }
private void setAdjustButtonStatus(){
this.downButton.setEnabled(this.showValue > TEN);
this.upButton.setEnabled(this.showValue < FOUR_HUNDRED);
}
private int calSliderValue(int value) { private int calSliderValue(int value) {
int result; int result;
if (value > HUNDRED) { if (value > HUNDRED) {
@ -245,7 +249,7 @@ public class JFormSliderPane extends JPanel {
if (newUpVal <= FOUR_HUNDRED) { if (newUpVal <= FOUR_HUNDRED) {
showValue = newUpVal; showValue = newUpVal;
} else { } else {
showValue = TEN; showValue = FOUR_HUNDRED;
} }
refreshShowValueFieldText(); refreshShowValueFieldText();
refreshSlider(); refreshSlider();
@ -271,8 +275,7 @@ public class JFormSliderPane extends JPanel {
} }
public void setShowValue(int value) { public void setShowValue(int value) {
showValue = value; showValFieldChange(value);
showValFieldChange();
} }
@ -280,6 +283,55 @@ public class JFormSliderPane extends JPanel {
this.slider.addChangeListener(changeListener); this.slider.addChangeListener(changeListener);
} }
class JSliderPaneUI extends BasicSliderUI {
private static final int THUMB_XOFFSET = 8;
private static final int THUMB_YOFFSET = 3;
private static final int FOUR = 4;
private static final int FIVE = 5;
private static final int SIX = 6;
private static final int MID_X_SHIFT = 2; // 中点标记的水平位置偏移
public JSliderPaneUI(UISlider b) {
super(b);
}
/**
* 绘制指示物
*/
public void paintThumb(Graphics g) {
Rectangle knobBounds = thumbRect;
Graphics2D g2d = (Graphics2D) g;
g2d.drawImage(APPFIT_V0, knobBounds.x - THUMB_XOFFSET, knobBounds.y + THUMB_YOFFSET, null);
g2d.dispose();
}
/**
* 绘制刻度轨迹
*/
public void paintTrack(Graphics g) {
int cy, cw;
Rectangle trackBounds = trackRect;
if (slider.getOrientation() == UISlider.HORIZONTAL) {
Graphics2D g2 = (Graphics2D) g;
cy = (trackBounds.height / 2);
cw = trackBounds.width;
g2.setPaint(BACK_COLOR);
g2.fillRect(0, -cy, cw + 10, cy * 4);
g.setColor(new Color(216, 216, 216));
g.drawLine(0, cy, cw + 3, cy);
g.drawLine(MID_X_SHIFT + cw / 2, cy - FOUR, MID_X_SHIFT + cw / 2, cy + FOUR);
} else {
super.paintTrack(g);
}
}
public void setThumbLocation(int x, int y) {
super.setThumbLocation(x, y);
slider.repaint();
}
}
public static void main(String[] args) { public static void main(String[] args) {
JFrame jf = new JFrame("test"); JFrame jf = new JFrame("test");

5
designer-base/src/main/java/com/fr/design/update/actions/RecoverForDesigner.java

@ -24,6 +24,8 @@ public class RecoverForDesigner implements Recover {
private final String installHome = StableUtils.getInstallHome(); private final String installHome = StableUtils.getInstallHome();
private static final String HYPHEN = "-";
@Override @Override
public boolean recover() { public boolean recover() {
try{ try{
@ -41,7 +43,8 @@ public class RecoverForDesigner implements Recover {
@Override @Override
public boolean backup() { public boolean backup() {
//jar包备份文件的目录为"backup/"+jar包当前版本号 //jar包备份文件的目录为"backup/"+jar包当前版本号
String todayBackupDir = StableUtils.pathJoin(installHome, UpdateConstants.DESIGNER_BACKUP_DIR, (GeneralUtils.readBuildNO())); String versionBuildNo = GeneralUtils.getVersion() + HYPHEN + GeneralUtils.readBuildNO();
String todayBackupDir = StableUtils.pathJoin(installHome, UpdateConstants.DESIGNER_BACKUP_DIR, versionBuildNo);
String envHome = ProjectLibrary.getInstance().getLibHome(); String envHome = ProjectLibrary.getInstance().getLibHome();
backupFilesFromInstallEnv(envHome, todayBackupDir); backupFilesFromInstallEnv(envHome, todayBackupDir);
backupFilesFromInstallLib(installHome, todayBackupDir); backupFilesFromInstallLib(installHome, todayBackupDir);

8
designer-base/src/main/java/com/fr/design/update/ui/dialog/UpdateMainDialog.java

@ -29,6 +29,7 @@ import com.fr.general.*;
import com.fr.general.http.HttpToolbox; import com.fr.general.http.HttpToolbox;
import com.fr.json.JSONArray; import com.fr.json.JSONArray;
import com.fr.json.JSONObject; import com.fr.json.JSONObject;
import com.fr.locale.InterProviderFactory;
import com.fr.log.FineLoggerFactory; import com.fr.log.FineLoggerFactory;
import com.fr.process.engine.core.FineProcessContext; import com.fr.process.engine.core.FineProcessContext;
import com.fr.process.engine.core.FineProcessEngineEvent; import com.fr.process.engine.core.FineProcessEngineEvent;
@ -80,6 +81,8 @@ public class UpdateMainDialog extends UIDialog {
private static final String UPDATE_CACHE_STATE_FAIL = "fail"; private static final String UPDATE_CACHE_STATE_FAIL = "fail";
private static final String UPDATE_CACHE_STATE_SUCCESS = "success"; private static final String UPDATE_CACHE_STATE_SUCCESS = "success";
private static final String HYPHEN = "-";
private final SimpleDateFormat CHANGELOG_FORMAT = new SimpleDateFormat("M/d/y, h:m:s a", Locale.ENGLISH); private final SimpleDateFormat CHANGELOG_FORMAT = new SimpleDateFormat("M/d/y, h:m:s a", Locale.ENGLISH);
private final SimpleDateFormat UPDATE_INFO_TABLE_FORMAT = new SimpleDateFormat("yyyy.MM.dd"); private final SimpleDateFormat UPDATE_INFO_TABLE_FORMAT = new SimpleDateFormat("yyyy.MM.dd");
@ -303,8 +306,9 @@ public class UpdateMainDialog extends UIDialog {
new UILabel(UpdateConstants.DEFAULT_APP_NAME + StringUtils.BLANK + ProductConstants.VERSION) new UILabel(UpdateConstants.DEFAULT_APP_NAME + StringUtils.BLANK + ProductConstants.VERSION)
); );
String notInstallVersion = InterProviderFactory.getProvider().getLocText("Fine-Core_Basic_About_No_Build");
jarCurrentLabel = new UILabel(StringUtils.isEmpty(GeneralUtils.readBuildNO()) ? com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Updater_Not_Install_Version") : GeneralUtils.readBuildNO(), SwingConstants.CENTER); String versionBuildNo = GeneralUtils.getVersion() + HYPHEN + GeneralUtils.readBuildNO();
jarCurrentLabel = new UILabel(ComparatorUtils.equals(notInstallVersion, GeneralUtils.readBuildNO()) ? notInstallVersion : versionBuildNo, SwingConstants.CENTER);
UILabel noJarPreviousRevision = new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Updater_No_Previous_Version")); UILabel noJarPreviousRevision = new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Updater_No_Previous_Version"));
UpdateActionLabel jarRestorePreviousRevision = new UpdateActionLabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Updater_Restore"), false); UpdateActionLabel jarRestorePreviousRevision = new UpdateActionLabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Updater_Restore"), false);
jarRestorePreviousRevision.setForeground(new Color(RESTORE_LABEL_COLOR)); jarRestorePreviousRevision.setForeground(new Color(RESTORE_LABEL_COLOR));

7
designer-base/src/main/java/com/fr/env/CheckServiceDialog.java vendored

@ -59,10 +59,13 @@ public class CheckServiceDialog extends JDialog implements ActionListener {
label.setPreferredSize(new Dimension(650,30)); label.setPreferredSize(new Dimension(650,30));
String text = Toolkit.i18nText("Fine-Design_Basic_Remote_Design_Local_Designer") + localBranch String text = Toolkit.i18nText("Fine-Design_Basic_Remote_Design_Local_Designer") + localBranch
+ Toolkit.i18nText("Fine-Design_Basic_Remote_Design_Remote_Server") + remoteBranch; + Toolkit.i18nText("Fine-Design_Basic_Remote_Design_Remote_Server") +
Toolkit.i18nText("Fine-Design_Basic_Remote_Design_Branch_Is_Old") +
localBranch;
String delimiter = DisplayUtils.getDisplayLength(text) > 70? "<br>":"/"; String delimiter = DisplayUtils.getDisplayLength(text) > 70? "<br>":"/";
JLabel label2 = new JLabel("<html>"+Toolkit.i18nText("Fine-Design_Basic_Remote_Design_Local_Designer") JLabel label2 = new JLabel("<html>"+Toolkit.i18nText("Fine-Design_Basic_Remote_Design_Local_Designer")
+ localBranch + delimiter + Toolkit.i18nText("Fine-Design_Basic_Remote_Design_Remote_Server") + remoteBranch+"</html>"); + localBranch + delimiter + Toolkit.i18nText("Fine-Design_Basic_Remote_Design_Remote_Server") +
Toolkit.i18nText("Fine-Design_Basic_Remote_Design_Branch_Is_Old")+ localBranch +"</html>");
label2.setPreferredSize(new Dimension(600,30)); label2.setPreferredSize(new Dimension(600,30));
JTextPane tipsPane = new JTextPane(); JTextPane tipsPane = new JTextPane();

32
designer-base/src/main/java/com/fr/env/RemoteEnvPane.java vendored

@ -44,6 +44,7 @@ import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter; import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent; import java.awt.event.WindowEvent;
import java.io.File; import java.io.File;
import java.util.function.Supplier;
import static com.fr.design.layout.TableLayout.FILL; import static com.fr.design.layout.TableLayout.FILL;
import static com.fr.design.layout.TableLayout.PREFERRED; import static com.fr.design.layout.TableLayout.PREFERRED;
@ -439,20 +440,29 @@ public class RemoteEnvPane extends BasicBeanPane<RemoteDesignerWorkspaceInfo> {
* 设置 app servlet 默认值 * 设置 app servlet 默认值
*/ */
private void setDefaultAppAndServlet() { private void setDefaultAppAndServlet() {
String appName; setWrap(webAppNameInput, () -> FRContext.getCommonOperator().getAppName(), RemoteWorkspaceURL.DEFAULT_WEB_APP_NAME);
String servletName; setWrap(servletNameInput, () -> ServerConfig.getInstance().getServletName(), RemoteWorkspaceURL.DEFAULT_SERVLET_NAME);
try { }
appName = FRContext.getCommonOperator().getAppName();
} catch (Exception ignored) { private void setWrap(final UITextField textField, final Supplier<String> supplier, final String defaultName) {
appName = RemoteWorkspaceURL.DEFAULT_WEB_APP_NAME; new SwingWorker<String, Void>() {
@Override
protected String doInBackground() throws Exception {
return supplier.get();
} }
@Override
protected void done() {
String name = defaultName;
try { try {
servletName = ServerConfig.getInstance().getServletName(); name = get();
} catch (Exception ignored) { } catch (Exception e) {
servletName = RemoteWorkspaceURL.DEFAULT_SERVLET_NAME; FineLoggerFactory.getLogger().error(e.getMessage() , e);
}
textField.setText(name);
} }
webAppNameInput.setText(appName); }.execute();
servletNameInput.setText(servletName);
} }

12
designer-base/src/test/java/com/fr/design/mainframe/JFormSliderPaneTest.java

@ -9,18 +9,6 @@ import org.junit.Test;
*/ */
public class JFormSliderPaneTest { public class JFormSliderPaneTest {
@Test
public void testParseInputValue() {
JFormSliderPane sliderPane = new JFormSliderPane();
int result = Reflect.on(sliderPane).call("parseInputValue", "100%").get();
Assert.assertEquals(100, result);
result = Reflect.on(sliderPane).call("parseInputValue", "50%").get();
Assert.assertEquals(50, result);
result = Reflect.on(sliderPane).call("parseInputValue", "50").get();
Assert.assertEquals(50, result);
result = Reflect.on(sliderPane).call("parseInputValue", "50abc").get();
Assert.assertEquals(100, result);
}
@Test @Test
public void testGetPreferredValue() { public void testGetPreferredValue() {

20
designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/data/table/SeriesTypeUseComboxPane.java

@ -100,24 +100,30 @@ public class SeriesTypeUseComboxPane extends BasicBeanPane<ChartCollection> {
protected void initLayout() { protected void initLayout() {
this.setLayout(new BorderLayout(4, LayoutConstants.VGAP_MEDIUM)); this.setLayout(new BorderLayout(4, LayoutConstants.VGAP_MEDIUM));
JPanel northPane = new JPanel(new BorderLayout(4, 0)); JPanel northPane = new JPanel(new BorderLayout(4, 0));
UILabel label1 = new UILabel(Toolkit.i18nText("Fine-Design_Chart_Series_Name_From"));
label1.setPreferredSize(new Dimension(ChartDataPane.LABEL_WIDTH, ChartDataPane.LABEL_HEIGHT)); //使用系列名/系列值选项面板
JPanel borderLayoutPane = GUICoreUtils.createBorderLayoutPane(new Component[]{content, null, null, label1, null}); UILabel seriesLabel = new UILabel(Toolkit.i18nText("Fine-Design_Chart_Series_Name_From"));
seriesLabel.setPreferredSize(new Dimension(ChartDataPane.LABEL_WIDTH, ChartDataPane.LABEL_HEIGHT));
JPanel borderLayoutPane = GUICoreUtils.createBorderLayoutPane(new Component[]{content, null, null, seriesLabel, null});
northPane.add(borderLayoutPane); northPane.add(borderLayoutPane);
northPane.setBorder(BorderFactory.createEmptyBorder(10, 24, 0, 15)); northPane.setBorder(BorderFactory.createEmptyBorder(10, 24, 0, 16));
cardPane.setBorder(BorderFactory.createEmptyBorder(0, 24, 0, 15));
this.add(northPane, BorderLayout.NORTH); this.add(northPane, BorderLayout.NORTH);
//系列名/系列值配置面板
cardPane.setBorder(BorderFactory.createEmptyBorder(0, 24, 0, 15));
this.add(cardPane, BorderLayout.CENTER); this.add(cardPane, BorderLayout.CENTER);
//数据筛选
dataScreeningPane = new ChartDataFilterPane(this.initplot, parent); dataScreeningPane = new ChartDataFilterPane(this.initplot, parent);
JPanel panel = new UIExpandablePane(Toolkit.i18nText("Fine-Design_Chart_Data_Filter"), 250, 24, dataScreeningPane); JPanel panel = new UIExpandablePane(Toolkit.i18nText("Fine-Design_Chart_Data_Filter"), 250, 24, dataScreeningPane);
panel.setBorder(BorderFactory.createEmptyBorder(0, 20, 0, 15)); panel.setBorder(BorderFactory.createEmptyBorder(0, 10, 0, 15));
dataScreeningPane.setBorder(BorderFactory.createEmptyBorder(10, 0, 0, 0)); dataScreeningPane.setBorder(BorderFactory.createEmptyBorder(10, 0, 0, 0));
this.add(panel, BorderLayout.SOUTH); this.add(panel, BorderLayout.SOUTH);
} }
public Dimension getPreferredSize() { public Dimension getPreferredSize() {
Dimension preferredSize = super.getPreferredSize(); Dimension preferredSize = super.getPreferredSize();
return new Dimension(260, (int) preferredSize.getHeight()); return new Dimension(246, (int) preferredSize.getHeight());
} }
/** /**

8
designer-chart/src/main/java/com/fr/van/chart/box/BoxIndependentVanChartInterface.java

@ -13,8 +13,11 @@ import com.fr.design.mainframe.chart.gui.ChartStylePane;
import com.fr.design.mainframe.chart.gui.data.report.AbstractReportDataContentPane; import com.fr.design.mainframe.chart.gui.data.report.AbstractReportDataContentPane;
import com.fr.design.mainframe.chart.gui.data.table.AbstractTableDataContentPane; import com.fr.design.mainframe.chart.gui.data.table.AbstractTableDataContentPane;
import com.fr.design.mainframe.chart.gui.type.AbstractChartTypePane; import com.fr.design.mainframe.chart.gui.type.AbstractChartTypePane;
import com.fr.plugin.chart.attr.plot.VanChartPlot;
import com.fr.van.chart.box.data.report.BoxPlotReportDataContentPane; import com.fr.van.chart.box.data.report.BoxPlotReportDataContentPane;
import com.fr.van.chart.box.data.table.BoxPlotTableDataContentPane; import com.fr.van.chart.box.data.table.BoxPlotTableDataContentPane;
import com.fr.van.chart.designer.other.AutoRefreshPane;
import com.fr.van.chart.designer.other.AutoRefreshPaneWithoutTooltip;
import com.fr.van.chart.designer.other.VanChartInteractivePane; import com.fr.van.chart.designer.other.VanChartInteractivePane;
import com.fr.van.chart.designer.other.VanChartOtherPane; import com.fr.van.chart.designer.other.VanChartOtherPane;
import com.fr.van.chart.designer.other.zoom.ZoomPane; import com.fr.van.chart.designer.other.zoom.ZoomPane;
@ -79,6 +82,11 @@ public class BoxIndependentVanChartInterface extends AbstractIndependentVanChart
}; };
} }
protected AutoRefreshPane getMoreLabelPane(VanChartPlot plot) {
boolean isLargeModel = largeModel(plot);
return new AutoRefreshPaneWithoutTooltip(chart, isLargeModel);
}
protected double[] getToolBarRowSize() { protected double[] getToolBarRowSize() {
double p = TableLayout.PREFERRED; double p = TableLayout.PREFERRED;
return new double[]{p, p}; return new double[]{p, p};

2
designer-chart/src/main/java/com/fr/van/chart/designer/other/VanChartInteractivePane.java

@ -22,6 +22,7 @@ import com.fr.plugin.chart.attr.plot.VanChartPlot;
import com.fr.plugin.chart.attr.plot.VanChartRectanglePlot; import com.fr.plugin.chart.attr.plot.VanChartRectanglePlot;
import com.fr.plugin.chart.axis.type.AxisPlotType; import com.fr.plugin.chart.axis.type.AxisPlotType;
import com.fr.plugin.chart.base.AttrEffect; import com.fr.plugin.chart.base.AttrEffect;
import com.fr.plugin.chart.base.AttrFloatColor;
import com.fr.plugin.chart.base.AttrLabel; import com.fr.plugin.chart.base.AttrLabel;
import com.fr.plugin.chart.base.RefreshMoreLabel; import com.fr.plugin.chart.base.RefreshMoreLabel;
import com.fr.plugin.chart.base.VanChartAttrMarker; import com.fr.plugin.chart.base.VanChartAttrMarker;
@ -434,6 +435,7 @@ public class VanChartInteractivePane extends AbstractVanChartScrollPane<Chart> {
conditionAttr.remove(ScatterAttrLabel.class); conditionAttr.remove(ScatterAttrLabel.class);
conditionAttr.remove(AttrEffect.class); conditionAttr.remove(AttrEffect.class);
conditionAttr.remove(AttrLineEffect.class); conditionAttr.remove(AttrLineEffect.class);
conditionAttr.remove(AttrFloatColor.class);
VanChartAttrMarker attrMarker = conditionAttr.getExisted(VanChartAttrMarker.class); VanChartAttrMarker attrMarker = conditionAttr.getExisted(VanChartAttrMarker.class);
if (attrMarker != null && !attrMarker.isCommon()) { if (attrMarker != null && !attrMarker.isCommon()) {

2
designer-chart/src/main/java/com/fr/van/chart/heatmap/designer/style/VanChartHeatMapSeriesPane.java

@ -111,7 +111,7 @@ public class VanChartHeatMapSeriesPane extends VanChartMapSeriesPane {
double[] col = {f}; double[] col = {f};
Component[][] components = new Component[][]{ Component[][] components = new Component[][]{
new Component[]{getVanChartFillStylePane()}, new Component[]{getVanChartValueColorPane()},
}; };
JPanel panel = TableLayout4VanChartHelper.createGapTableLayoutPane(components, row, col); JPanel panel = TableLayout4VanChartHelper.createGapTableLayoutPane(components, row, col);

16
designer-chart/src/main/java/com/fr/van/chart/map/VanChartMapSeriesPane.java

@ -38,6 +38,7 @@ import com.fr.van.chart.map.line.VanChartCurvePane;
import com.fr.van.chart.map.line.VanChartLineMapEffectPane; import com.fr.van.chart.map.line.VanChartLineMapEffectPane;
import javax.swing.BorderFactory; import javax.swing.BorderFactory;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JPanel; import javax.swing.JPanel;
import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener; import javax.swing.event.ChangeListener;
@ -60,6 +61,9 @@ public class VanChartMapSeriesPane extends VanChartColorValueSeriesPane {
private static final String[] MARKER_TYPES = new String[]{MapMarkerType.DEFAULT.toLocalString(), private static final String[] MARKER_TYPES = new String[]{MapMarkerType.DEFAULT.toLocalString(),
MapMarkerType.COMMON.toLocalString(), MapMarkerType.BUBBLE.toLocalString(), MapMarkerType.IMAGE.toLocalString()}; MapMarkerType.COMMON.toLocalString(), MapMarkerType.BUBBLE.toLocalString(), MapMarkerType.IMAGE.toLocalString()};
private static final String[] LARGE_MARKER_TYPES = new String[]{MapMarkerType.DEFAULT.toLocalString(),
MapMarkerType.COMMON.toLocalString(), MapMarkerType.BUBBLE.toLocalString()};
//custom //custom
private UIButtonGroup<Integer> areaPointAndLineGroup; private UIButtonGroup<Integer> areaPointAndLineGroup;
@ -145,8 +149,18 @@ public class VanChartMapSeriesPane extends VanChartColorValueSeriesPane {
} }
private void checkPointCompsEnabledWithLarge(Plot plot) { private void checkPointCompsEnabledWithLarge(Plot plot) {
boolean largeModel = largeModel(plot);
if (pointEffectPane != null) { if (pointEffectPane != null) {
GUICoreUtils.setEnabled(pointEffectPane, !largeModel(plot)); GUICoreUtils.setEnabled(pointEffectPane, !largeModel);
}
if (markerTypeCom != null) {
Object selectedItem = markerTypeCom.getSelectedItem();
markerTypeCom.setModel(new DefaultComboBoxModel(largeModel ? LARGE_MARKER_TYPES : MARKER_TYPES));
if (ComparatorUtils.equals(MapMarkerType.IMAGE.toLocalString(), selectedItem) && largeModel) {
markerTypeCom.setSelectedItem(MapMarkerType.COMMON.toLocalString());
}else{
markerTypeCom.setSelectedItem(selectedItem);
}
} }
} }

3
designer-chart/src/main/java/com/fr/van/chart/map/designer/other/condition/pane/VanChartBubblePointMapConditionPane.java

@ -3,8 +3,10 @@ package com.fr.van.chart.map.designer.other.condition.pane;
import com.fr.chart.chartattr.Plot; import com.fr.chart.chartattr.Plot;
import com.fr.plugin.chart.attr.EffectHelper; import com.fr.plugin.chart.attr.EffectHelper;
import com.fr.plugin.chart.base.AttrEffect; import com.fr.plugin.chart.base.AttrEffect;
import com.fr.plugin.chart.base.AttrFloatColor;
import com.fr.plugin.chart.bubble.attr.VanChartAttrBubble; import com.fr.plugin.chart.bubble.attr.VanChartAttrBubble;
import com.fr.van.chart.designer.other.condition.item.VanChartEffectConditionPane; import com.fr.van.chart.designer.other.condition.item.VanChartEffectConditionPane;
import com.fr.van.chart.designer.other.condition.item.VanChartFloatColorConditionPane;
import com.fr.van.chart.map.designer.other.condition.item.VanChartBubbleMarkerConditionPane; import com.fr.van.chart.map.designer.other.condition.item.VanChartBubbleMarkerConditionPane;
/** /**
@ -21,6 +23,7 @@ public class VanChartBubblePointMapConditionPane extends VanChartMapConditionPan
classPaneMap.put(VanChartAttrBubble.class, new VanChartBubbleMarkerConditionPane(this)); classPaneMap.put(VanChartAttrBubble.class, new VanChartBubbleMarkerConditionPane(this));
if (addLabelOrEffectAction()) { if (addLabelOrEffectAction()) {
addLabelAction(); addLabelAction();
classPaneMap.put(AttrFloatColor.class, new VanChartFloatColorConditionPane(this));
classPaneMap.put(AttrEffect.class, new VanChartEffectConditionPane(this, EffectHelper.getBubblePlotDefaultEffect())); classPaneMap.put(AttrEffect.class, new VanChartEffectConditionPane(this, EffectHelper.getBubblePlotDefaultEffect()));
} }
} }

3
designer-chart/src/main/java/com/fr/van/chart/map/designer/other/condition/pane/VanChartCommonPointMapConditionPane.java

@ -3,8 +3,10 @@ package com.fr.van.chart.map.designer.other.condition.pane;
import com.fr.chart.chartattr.Plot; import com.fr.chart.chartattr.Plot;
import com.fr.plugin.chart.attr.EffectHelper; import com.fr.plugin.chart.attr.EffectHelper;
import com.fr.plugin.chart.base.AttrEffect; import com.fr.plugin.chart.base.AttrEffect;
import com.fr.plugin.chart.base.AttrFloatColor;
import com.fr.plugin.chart.base.VanChartAttrMarker; import com.fr.plugin.chart.base.VanChartAttrMarker;
import com.fr.van.chart.designer.other.condition.item.VanChartEffectConditionPane; import com.fr.van.chart.designer.other.condition.item.VanChartEffectConditionPane;
import com.fr.van.chart.designer.other.condition.item.VanChartFloatColorConditionPane;
import com.fr.van.chart.map.designer.other.condition.item.VanChartCommonMarkerConditionPane; import com.fr.van.chart.map.designer.other.condition.item.VanChartCommonMarkerConditionPane;
/** /**
@ -21,6 +23,7 @@ public class VanChartCommonPointMapConditionPane extends VanChartMapConditionPan
classPaneMap.put(VanChartAttrMarker.class, new VanChartCommonMarkerConditionPane(this)); classPaneMap.put(VanChartAttrMarker.class, new VanChartCommonMarkerConditionPane(this));
if(addLabelOrEffectAction()) { if(addLabelOrEffectAction()) {
addLabelAction(); addLabelAction();
classPaneMap.put(AttrFloatColor.class, new VanChartFloatColorConditionPane(this));
classPaneMap.put(AttrEffect.class, new VanChartEffectConditionPane(this, EffectHelper.getScatterPlotDefaultEffect())); classPaneMap.put(AttrEffect.class, new VanChartEffectConditionPane(this, EffectHelper.getScatterPlotDefaultEffect()));
} }
} }

3
designer-chart/src/main/java/com/fr/van/chart/map/designer/other/condition/pane/VanChartDefaultPointMapConditionPane.java

@ -3,7 +3,9 @@ package com.fr.van.chart.map.designer.other.condition.pane;
import com.fr.chart.chartattr.Plot; import com.fr.chart.chartattr.Plot;
import com.fr.plugin.chart.attr.EffectHelper; import com.fr.plugin.chart.attr.EffectHelper;
import com.fr.plugin.chart.base.AttrEffect; import com.fr.plugin.chart.base.AttrEffect;
import com.fr.plugin.chart.base.AttrFloatColor;
import com.fr.van.chart.designer.other.condition.item.VanChartEffectConditionPane; import com.fr.van.chart.designer.other.condition.item.VanChartEffectConditionPane;
import com.fr.van.chart.designer.other.condition.item.VanChartFloatColorConditionPane;
/** /**
* Created by Mitisky on 16/5/23. * Created by Mitisky on 16/5/23.
@ -17,6 +19,7 @@ public class VanChartDefaultPointMapConditionPane extends VanChartMapConditionPa
protected void addDiffAction() { protected void addDiffAction() {
if(addLabelOrEffectAction()) { if(addLabelOrEffectAction()) {
addLabelAction(); addLabelAction();
classPaneMap.put(AttrFloatColor.class, new VanChartFloatColorConditionPane(this));
classPaneMap.put(AttrEffect.class, new VanChartEffectConditionPane(this, EffectHelper.getPointMapPlotDefaultEffect())); classPaneMap.put(AttrEffect.class, new VanChartEffectConditionPane(this, EffectHelper.getPointMapPlotDefaultEffect()));
} }
} }

3
designer-chart/src/main/java/com/fr/van/chart/map/designer/other/condition/pane/VanChartImagePointMapConditionPane.java

@ -1,7 +1,9 @@
package com.fr.van.chart.map.designer.other.condition.pane; package com.fr.van.chart.map.designer.other.condition.pane;
import com.fr.chart.chartattr.Plot; import com.fr.chart.chartattr.Plot;
import com.fr.plugin.chart.base.AttrFloatColor;
import com.fr.plugin.chart.base.VanChartAttrMarker; import com.fr.plugin.chart.base.VanChartAttrMarker;
import com.fr.van.chart.designer.other.condition.item.VanChartFloatColorConditionPane;
import com.fr.van.chart.map.designer.other.condition.item.VanChartImageMarkerConditionPane; import com.fr.van.chart.map.designer.other.condition.item.VanChartImageMarkerConditionPane;
/** /**
@ -18,6 +20,7 @@ public class VanChartImagePointMapConditionPane extends VanChartMapConditionPane
classPaneMap.put(VanChartAttrMarker.class, new VanChartImageMarkerConditionPane(this)); classPaneMap.put(VanChartAttrMarker.class, new VanChartImageMarkerConditionPane(this));
if (addLabelOrEffectAction()) { if (addLabelOrEffectAction()) {
addLabelAction(); addLabelAction();
classPaneMap.put(AttrFloatColor.class, new VanChartFloatColorConditionPane(this));
} }
} }
} }

2
designer-chart/src/main/java/com/fr/van/chart/map/designer/other/condition/pane/VanChartLineMapConditionPane.java

@ -43,13 +43,13 @@ public class VanChartLineMapConditionPane extends DataSeriesConditionPane {
@Override @Override
protected void addBasicAction() { protected void addBasicAction() {
classPaneMap.put(AttrBackground.class, new VanChartSeriesColorConditionPane(this)); classPaneMap.put(AttrBackground.class, new VanChartSeriesColorConditionPane(this));
classPaneMap.put(AttrFloatColor.class, new VanChartFloatColorConditionPane(this));
classPaneMap.put(AttrCurve.class, new VanChartCurveConditionPane(this)); classPaneMap.put(AttrCurve.class, new VanChartCurveConditionPane(this));
classPaneMap.put(AttrTooltip.class, new VanChartLineMapTooltipConditionPane(this, plot)); classPaneMap.put(AttrTooltip.class, new VanChartLineMapTooltipConditionPane(this, plot));
//大数据模式 恢复用注释。下面1行删除。 //大数据模式 恢复用注释。下面1行删除。
if (!PlotFactory.lineMapLargeModel(plot)) { if (!PlotFactory.lineMapLargeModel(plot)) {
//大数据模式 恢复用注释。取消注释。 //大数据模式 恢复用注释。取消注释。
//if (!PlotFactory.largeDataModel(plot)) { //if (!PlotFactory.largeDataModel(plot)) {
classPaneMap.put(AttrFloatColor.class, new VanChartFloatColorConditionPane(this));
classPaneMap.put(AttrLineEffect.class, new VanChartLineEffectConditionPane(this, EffectHelper.getLineMapDefaultLineEffect())); classPaneMap.put(AttrLineEffect.class, new VanChartLineEffectConditionPane(this, EffectHelper.getLineMapDefaultLineEffect()));
} }
} }

2
designer-chart/src/main/java/com/fr/van/chart/map/designer/other/condition/pane/VanChartMapConditionPane.java

@ -49,11 +49,11 @@ public class VanChartMapConditionPane extends DataSeriesConditionPane {
classPaneMap.put(AttrBackground.class, new VanChartSeriesColorConditionPane(this)); classPaneMap.put(AttrBackground.class, new VanChartSeriesColorConditionPane(this));
classPaneMap.put(AttrAlpha.class, new LabelAlphaPane(this)); classPaneMap.put(AttrAlpha.class, new LabelAlphaPane(this));
classPaneMap.put(AttrTooltip.class, new VanChartTooltipConditionPane(this, plot)); classPaneMap.put(AttrTooltip.class, new VanChartTooltipConditionPane(this, plot));
classPaneMap.put(AttrFloatColor.class, new VanChartFloatColorConditionPane(this));
addDiffAction(); addDiffAction();
} }
protected void addDiffAction() { protected void addDiffAction() {
classPaneMap.put(AttrFloatColor.class, new VanChartFloatColorConditionPane(this));
classPaneMap.put(AttrBorderWithAlpha.class, new VanChartBorderWithAlphaConditionPane(this)); classPaneMap.put(AttrBorderWithAlpha.class, new VanChartBorderWithAlphaConditionPane(this));
classPaneMap.put(AttrEffect.class, new VanChartEffectConditionPane(this, EffectHelper.getMapPlotDefaultEffect())); classPaneMap.put(AttrEffect.class, new VanChartEffectConditionPane(this, EffectHelper.getMapPlotDefaultEffect()));
addLabelAction(); addLabelAction();

12
designer-chart/src/main/java/com/fr/van/chart/structure/desinger/data/StructurePlotReportDataContentPane.java

@ -5,10 +5,10 @@ import com.fr.chart.chartattr.ChartCollection;
import com.fr.design.formula.TinyFormulaPane; import com.fr.design.formula.TinyFormulaPane;
import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.ilable.UILabel;
import com.fr.design.gui.itextfield.UITextField; import com.fr.design.gui.itextfield.UITextField;
import com.fr.design.i18n.Toolkit;
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.chart.gui.data.report.AbstractReportDataContentPane; import com.fr.design.mainframe.chart.gui.data.report.AbstractReportDataContentPane;
import com.fr.plugin.chart.structure.data.StructureReportDefinition; import com.fr.plugin.chart.structure.data.StructureReportDefinition;
import javax.swing.BorderFactory; import javax.swing.BorderFactory;
@ -40,11 +40,11 @@ public class StructurePlotReportDataContentPane extends AbstractReportDataConten
nodeValue = new TinyFormulaPane(); nodeValue = new TinyFormulaPane();
Component[][] components = new Component[][]{ Component[][] components = new Component[][]{
new Component[]{new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Node_Name")), nodeName}, new Component[]{new UILabel(Toolkit.i18nText("Fine-Design_Chart_Node_Name")), nodeName},
new Component[]{new UILabel("id"), nodeID}, new Component[]{new UILabel(Toolkit.i18nText("Fine-Design_Chart_Node_Id")), nodeID},
new Component[]{new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Parent_ID")), parentID}, new Component[]{new UILabel(Toolkit.i18nText("Fine-Design_Chart_Parent_Node_Id")), parentID},
new Component[]{new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_MultiPie_Series_Name")), seriesName}, new Component[]{new UILabel(Toolkit.i18nText("Fine-Design_Chart_MultiPie_Series_Name")), seriesName},
new Component[]{new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Series_Value")), nodeValue}, new Component[]{new UILabel(Toolkit.i18nText("Fine-Design_Chart_Series_Value")), nodeValue},
}; };
JPanel panel = TableLayoutHelper.createGapTableLayoutPane(components,rowSize,columnSize,24,6); JPanel panel = TableLayoutHelper.createGapTableLayoutPane(components,rowSize,columnSize,24,6);

16
designer-chart/src/main/java/com/fr/van/chart/structure/desinger/data/StructurePlotTableDataContentPane.java

@ -6,19 +6,19 @@ import com.fr.data.util.function.AbstractDataFunction;
import com.fr.design.gui.icombobox.UIComboBox; import com.fr.design.gui.icombobox.UIComboBox;
import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.ilable.UILabel;
import com.fr.design.gui.itextfield.UITextField; import com.fr.design.gui.itextfield.UITextField;
import com.fr.design.i18n.Toolkit;
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.chart.gui.data.CalculateComboBox; import com.fr.design.mainframe.chart.gui.data.CalculateComboBox;
import com.fr.design.mainframe.chart.gui.data.table.AbstractTableDataContentPane; import com.fr.design.mainframe.chart.gui.data.table.AbstractTableDataContentPane;
import com.fr.plugin.chart.structure.data.StructureTableDefinition; import com.fr.plugin.chart.structure.data.StructureTableDefinition;
import javax.swing.BorderFactory; import javax.swing.BorderFactory;
import javax.swing.JPanel; import javax.swing.JPanel;
import java.util.List;
import java.awt.BorderLayout; import java.awt.BorderLayout;
import java.awt.Component; import java.awt.Component;
import java.awt.Dimension; import java.awt.Dimension;
import java.util.List;
/** /**
* Created by shine on 2017/2/15. * Created by shine on 2017/2/15.
@ -45,12 +45,12 @@ public class StructurePlotTableDataContentPane extends AbstractTableDataContentP
calculateCombox = new CalculateComboBox(); calculateCombox = new CalculateComboBox();
Component[][] components = new Component[][]{ Component[][] components = new Component[][]{
new Component[]{new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Node_Name")), nodeName}, new Component[]{new UILabel(Toolkit.i18nText("Fine-Design_Chart_Node_Name")), nodeName},
new Component[]{new UILabel("id"), nodeId}, new Component[]{new UILabel(Toolkit.i18nText("Fine-Design_Chart_Node_Id")), nodeId},
new Component[]{new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Parent_ID")), parenrId}, new Component[]{new UILabel(Toolkit.i18nText("Fine-Design_Chart_Parent_Node_Id")), parenrId},
new Component[]{new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_MultiPie_Series_Name")), seriesName}, new Component[]{new UILabel(Toolkit.i18nText("Fine-Design_Chart_MultiPie_Series_Name")), seriesName},
new Component[]{new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Series_Value")), nodeValue}, new Component[]{new UILabel(Toolkit.i18nText("Fine-Design_Chart_Series_Value")), nodeValue},
new Component[]{new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Summary_Method")), calculateCombox} new Component[]{new UILabel(Toolkit.i18nText("Fine-Design_Chart_Summary_Method")), calculateCombox}
}; };
JPanel panel = TableLayoutHelper.createGapTableLayoutPane(components,rowSize,columnSize,24,6); JPanel panel = TableLayoutHelper.createGapTableLayoutPane(components,rowSize,columnSize,24,6);

BIN
designer-chart/src/main/resources/com/fr/design/images/form/toolbar/box.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 623 B

BIN
designer-chart/src/main/resources/com/fr/van/chart/box.images/box.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 658 B

9
designer-form/src/main/java/com/fr/design/designer/beans/adapters/layout/FRBorderLayoutAdapter.java

@ -37,15 +37,14 @@ public class FRBorderLayoutAdapter extends AbstractLayoutAdapter {
public void fix(XCreator creator) { public void fix(XCreator creator) {
FRBorderLayout layout = (FRBorderLayout)container.getFRLayout(); FRBorderLayout layout = (FRBorderLayout)container.getFRLayout();
Object constraints = layout.getConstraints(creator); Object constraints = layout.getConstraints(creator);
double scale = container.getScale();
if (ComparatorUtils.equals(constraints, BorderLayout.NORTH)) { if (ComparatorUtils.equals(constraints, BorderLayout.NORTH)) {
((XWBorderLayout) container).toData().setNorthSize((int) (creator.getHeight() / scale)); ((XWBorderLayout)container).toData().setNorthSize(creator.getHeight());
} else if (ComparatorUtils.equals(constraints, BorderLayout.SOUTH)) { } else if (ComparatorUtils.equals(constraints, BorderLayout.SOUTH)) {
((XWBorderLayout) container).toData().setSouthSize((int) (creator.getHeight() / scale)); ((XWBorderLayout)container).toData().setSouthSize(creator.getHeight());
} else if (ComparatorUtils.equals(constraints, BorderLayout.EAST)) { } else if (ComparatorUtils.equals(constraints, BorderLayout.EAST)) {
((XWBorderLayout) container).toData().setEastSize((int) (creator.getWidth() / scale)); ((XWBorderLayout)container).toData().setEastSize(creator.getWidth());
} else if (ComparatorUtils.equals(constraints, BorderLayout.WEST)) { } else if (ComparatorUtils.equals(constraints, BorderLayout.WEST)) {
((XWBorderLayout) container).toData().setWestSize((int) (creator.getWidth() / scale)); ((XWBorderLayout)container).toData().setWestSize(creator.getWidth());
} else { } else {
return; return;
} }

4
designer-form/src/main/java/com/fr/design/designer/beans/models/AddingModel.java

@ -101,6 +101,10 @@ public class AddingModel {
return this.creator; return this.creator;
} }
public boolean need2paint(){
return currentX + this.creator.getWidth() > 0 && currentY + this.creator.getHeight() > 0;
}
/** /**
* 当前组件是否已经添加到某个容器中 * 当前组件是否已经添加到某个容器中
* *

4
designer-form/src/main/java/com/fr/design/designer/beans/models/SelectionModel.java

@ -452,8 +452,8 @@ public class SelectionModel {
} }
} }
if (hasSelectionComponent()) { if (hasSelectionComponent()) {
int x = e.getX() + designer.getArea().getHorizontalValue(); int x = e.getX() + designer.getHorizontalScaleValue();
int y = e.getY() + designer.getArea().getVerticalValue(); int y = e.getY() + designer.getVerticalScaleValue();
dir = getDirection(selection.getRelativeBounds(), x, y); dir = getDirection(selection.getRelativeBounds(), x, y);
if (selection.size() == 1 && !ArrayUtils.contains(selection.getSelectedCreator().getDirections(), dir if (selection.size() == 1 && !ArrayUtils.contains(selection.getSelectedCreator().getDirections(), dir
.getActual())) { .getActual())) {

23
designer-form/src/main/java/com/fr/design/designer/creator/XButton.java

@ -147,7 +147,7 @@ public class XButton extends XWidgetCreator {
public void propertyChange() { public void propertyChange() {
FreeButton button = (FreeButton) data; FreeButton button = (FreeButton) data;
if (button.getFont() != null) { if (button.getFont() != null) {
setContentLabelFont(button.getFont().applyResolutionNP( contentLabel.setFont(button.getFont().applyResolutionNP(
FontTransformUtil.getDesignerFontResolution())); FontTransformUtil.getDesignerFontResolution()));
contentLabel.setForeground(button.getFont().getForeground()); contentLabel.setForeground(button.getFont().getForeground());
} }
@ -230,7 +230,7 @@ public class XButton extends XWidgetCreator {
if (!button.isCustomStyle()) { if (!button.isCustomStyle()) {
l.setBorder(BorderFactory.createLineBorder(new Color(148, 148, 148))); l.setBorder(BorderFactory.createLineBorder(new Color(148, 148, 148)));
bg = DEFAULTBG; bg = DEFAULTBG;
setContentLabelFont(DEFAULTFT); contentLabel.setFont(DEFAULTFT);
contentLabel.setForeground(DEFAULTFOREGROUNDCOLOR); contentLabel.setForeground(DEFAULTFOREGROUNDCOLOR);
editor.setLayout(new BorderLayout()); editor.setLayout(new BorderLayout());
editor.add(l, BorderLayout.CENTER); editor.add(l, BorderLayout.CENTER);
@ -239,7 +239,7 @@ public class XButton extends XWidgetCreator {
editor.setLayout(new BorderLayout()); editor.setLayout(new BorderLayout());
editor.add(l,BorderLayout.CENTER); editor.add(l,BorderLayout.CENTER);
if (button.getFont() != null) { if (button.getFont() != null) {
setContentLabelFont(button.getFont().applyResolutionNP( contentLabel.setFont(button.getFont().applyResolutionNP(
FontTransformUtil.getDesignerFontResolution())); FontTransformUtil.getDesignerFontResolution()));
contentLabel.setForeground(button.getFont().getForeground()); contentLabel.setForeground(button.getFont().getForeground());
} }
@ -302,26 +302,11 @@ public class XButton extends XWidgetCreator {
setButtonText(button.getText()); setButtonText(button.getText());
checkButonType(); checkButonType();
if (button.getFont() != null) { if (button.getFont() != null) {
setContentLabelFont(button.getFont().applyResolutionNP( contentLabel.setFont(button.getFont().applyResolutionNP(
FontTransformUtil.getDesignerFontResolution())); FontTransformUtil.getDesignerFontResolution()));
contentLabel.setForeground(button.getFont().getForeground()); contentLabel.setForeground(button.getFont().getForeground());
} }
} }
private void setContentLabelFont(Font font) {
float size = (float) (font.getSize() * getScale());
contentLabel.setFont(font.deriveFont(size));
}
public void setScale(double scale){
super.setScale(scale);
FreeButton button = (FreeButton) data;
if (button.getFont() != null) {
setContentLabelFont(button.getFont().applyResolutionNP(
FontTransformUtil.getDesignerFontResolution()));
}else {
setContentLabelFont(DEFAULTFT);
}
}
} }

9
designer-form/src/main/java/com/fr/design/designer/creator/XCreator.java

@ -49,7 +49,6 @@ import java.util.Set;
* *
*/ */
public abstract class XCreator extends JPanel implements XComponent, XCreatorTools { public abstract class XCreator extends JPanel implements XComponent, XCreatorTools {
private double scale = 1.0;
protected static final Border DEFALUTBORDER = BorderFactory.createLineBorder(new Color(210, 210, 210), 1); protected static final Border DEFALUTBORDER = BorderFactory.createLineBorder(new Color(210, 210, 210), 1);
public static final Dimension SMALL_PREFERRED_SIZE = new Dimension(80, 21); public static final Dimension SMALL_PREFERRED_SIZE = new Dimension(80, 21);
@ -103,14 +102,6 @@ public abstract class XCreator extends JPanel implements XComponent, XCreatorToo
} }
} }
public double getScale() {
return scale;
}
public void setScale(double scale) {
this.scale = scale;
}
/** /**
* 初始化组件大小 * 初始化组件大小
*/ */

6
designer-form/src/main/java/com/fr/design/designer/creator/XLabel.java

@ -17,7 +17,6 @@ import com.fr.design.mainframe.widget.renderer.LabelHorizontalAlignmentRenderer;
import com.fr.form.ui.Label; import com.fr.form.ui.Label;
import com.fr.form.ui.container.WParameterLayout; import com.fr.form.ui.container.WParameterLayout;
import com.fr.general.FRFont;
import com.fr.stable.ArrayUtils; import com.fr.stable.ArrayUtils;
import com.fr.stable.Constants; import com.fr.stable.Constants;
import com.fr.stable.core.PropertyChangeAdapter; import com.fr.stable.core.PropertyChangeAdapter;
@ -95,11 +94,8 @@ public class XLabel extends XWidgetCreator {
} }
if (label.getWidgetValue() != null) { if (label.getWidgetValue() != null) {
Graphics2D g2d = (Graphics2D) g.create(); Graphics2D g2d = (Graphics2D) g.create();
FRFont font = label.getFont();
float fontsize = (float) (font.getSize() * this.getScale());
BaseUtils.drawStringStyleInRotation(g2d, this.getWidth(), this.getHeight(), label.getWidgetValue() BaseUtils.drawStringStyleInRotation(g2d, this.getWidth(), this.getHeight(), label.getWidgetValue()
.toString(), Style.getInstance(font.applySize(fontsize)) .toString(), Style.getInstance(label.getFont()).deriveHorizontalAlignment(label.getTextalign())
.deriveHorizontalAlignment(label.getTextalign())
.deriveVerticalAlignment(label.isVerticalCenter() ? SwingConstants.CENTER : SwingConstants.TOP) .deriveVerticalAlignment(label.isVerticalCenter() ? SwingConstants.CENTER : SwingConstants.TOP)
.deriveTextStyle(label.isWrap() ? Style.TEXTSTYLE_WRAPTEXT : Style.TEXTSTYLE_SINGLELINE), .deriveTextStyle(label.isWrap() ? Style.TEXTSTYLE_WRAPTEXT : Style.TEXTSTYLE_SINGLELINE),
FontTransformUtil.getDesignerFontResolution()); FontTransformUtil.getDesignerFontResolution());

4
designer-form/src/main/java/com/fr/design/designer/creator/XTextArea.java

@ -59,10 +59,8 @@ public class XTextArea extends XFieldEditor {
TextArea area = (TextArea) data; TextArea area = (TextArea) data;
if (area.getWidgetValue() != null) { if (area.getWidgetValue() != null) {
Graphics2D g2d = (Graphics2D) g.create(); Graphics2D g2d = (Graphics2D) g.create();
FRFont font = FRFont.getInstance();
float fontsize = (float) (font.getSize() * this.getScale());
BaseUtils.drawStringStyleInRotation(g2d, this.getWidth(), this.getHeight(), area.getWidgetValue() BaseUtils.drawStringStyleInRotation(g2d, this.getWidth(), this.getHeight(), area.getWidgetValue()
.toString(), Style.getInstance(font.applySize(fontsize)).deriveHorizontalAlignment(Constants.LEFT) .toString(), Style.getInstance(FRFont.getInstance()).deriveHorizontalAlignment(Constants.LEFT)
.deriveVerticalAlignment(SwingConstants.TOP) .deriveVerticalAlignment(SwingConstants.TOP)
.deriveTextStyle(Style.TEXTSTYLE_WRAPTEXT), ScreenResolution.getScreenResolution()); .deriveTextStyle(Style.TEXTSTYLE_WRAPTEXT), ScreenResolution.getScreenResolution());
} }

4
designer-form/src/main/java/com/fr/design/designer/creator/XTextEditor.java

@ -67,10 +67,8 @@ public class XTextEditor extends XWrapperedFieldEditor {
TextEditor area = (TextEditor) data; TextEditor area = (TextEditor) data;
if (area.getWidgetValue() != null) { if (area.getWidgetValue() != null) {
Graphics2D g2d = (Graphics2D) g.create(); Graphics2D g2d = (Graphics2D) g.create();
FRFont font = FRFont.getInstance();
float fontsize = (float) (font.getSize() * this.getScale());
BaseUtils.drawStringStyleInRotation(g2d, this.getWidth(), this.getHeight(), area.getWidgetValue() BaseUtils.drawStringStyleInRotation(g2d, this.getWidth(), this.getHeight(), area.getWidgetValue()
.toString(), Style.getInstance(font.applySize(fontsize)).deriveHorizontalAlignment(Constants.LEFT) .toString(), Style.getInstance(FRFont.getInstance()).deriveHorizontalAlignment(Constants.LEFT)
.deriveTextStyle(Style.TEXTSTYLE_SINGLELINE), ScreenResolution.getScreenResolution()); .deriveTextStyle(Style.TEXTSTYLE_SINGLELINE), ScreenResolution.getScreenResolution());
} }
} }

16
designer-form/src/main/java/com/fr/design/designer/creator/XWAbsoluteLayout.java

@ -30,8 +30,6 @@ import com.fr.form.ui.Widget;
import com.fr.form.ui.container.WAbsoluteLayout; import com.fr.form.ui.container.WAbsoluteLayout;
import com.fr.form.ui.container.WAbsoluteLayout.BoundsWidget; import com.fr.form.ui.container.WAbsoluteLayout.BoundsWidget;
import com.fr.form.ui.container.WLayout; import com.fr.form.ui.container.WLayout;
import com.fr.form.ui.container.WParameterLayout;
import com.fr.form.ui.widget.CRBoundsWidget;
import com.fr.general.FRScreen; import com.fr.general.FRScreen;
import com.fr.general.IOUtils; import com.fr.general.IOUtils;
@ -399,7 +397,6 @@ public class XWAbsoluteLayout extends XLayoutContainer {
return; return;
} }
XWidgetCreator creator = (XWidgetCreator) e.getChild(); XWidgetCreator creator = (XWidgetCreator) e.getChild();
creator.setScale(this.getScale());
WAbsoluteLayout wabs = this.toData(); WAbsoluteLayout wabs = this.toData();
if (!creator.acceptType(XWFitLayout.class)) { if (!creator.acceptType(XWFitLayout.class)) {
creator.setDirections(Direction.ALL); creator.setDirections(Direction.ALL);
@ -605,17 +602,4 @@ public class XWAbsoluteLayout extends XLayoutContainer {
return super.getWidgetPropertyUIProviders(); return super.getWidgetPropertyUIProviders();
} }
} }
public void adjustCompSize(double percent) {
double p = percent + 1;
WAbsoluteLayout absoluteLayout = this.toData();
for (int i = 0; i < this.getComponentCount(); i++) {
XCreator component = (XCreator) this.getComponent(i);
CRBoundsWidget boundsWidget = absoluteLayout.getBoundsWidget(component.toData());
Rectangle rec = new Rectangle(boundsWidget.getBounds());
component.adjustCompSize(percent);
component.setBounds((int) (rec.x * p), (int) (rec.y * p), (int) (rec.width * p), (int) (rec.height * p));
}
}
} }

40
designer-form/src/main/java/com/fr/design/designer/creator/XWBorderLayout.java

@ -127,13 +127,13 @@ public class XWBorderLayout extends XLayoutContainer {
Object constraints = wlayout.getConstraints(wgt); Object constraints = wlayout.getConstraints(wgt);
Dimension d = new Dimension(); Dimension d = new Dimension();
if (ComparatorUtils.equals(WBorderLayout.NORTH,constraints)) { if (ComparatorUtils.equals(WBorderLayout.NORTH,constraints)) {
d.height = (int) (wlayout.getNorthSize() * getScale()); d.height = wlayout.getNorthSize();
} else if (ComparatorUtils.equals(WBorderLayout.SOUTH,constraints)) { } else if (ComparatorUtils.equals(WBorderLayout.SOUTH,constraints)) {
d.height = (int) (wlayout.getSouthSize() * getScale()); d.height = wlayout.getSouthSize();
} else if (ComparatorUtils.equals(WBorderLayout.EAST,constraints)) { } else if (ComparatorUtils.equals(WBorderLayout.EAST,constraints)) {
d.width = (int) (wlayout.getEastSize() * getScale()); d.width = wlayout.getEastSize();
} else if (ComparatorUtils.equals(WBorderLayout.WEST,constraints)) { } else if (ComparatorUtils.equals(WBorderLayout.WEST,constraints)) {
d.width = (int) (wlayout.getWestSize() * getScale()); d.width = wlayout.getWestSize();
} }
return d; return d;
} }
@ -207,36 +207,4 @@ public class XWBorderLayout extends XLayoutContainer {
public LayoutAdapter getLayoutAdapter() { public LayoutAdapter getLayoutAdapter() {
return new FRBorderLayoutAdapter(this); return new FRBorderLayoutAdapter(this);
} }
/**
* 自适应布局的缩放
*
* @param percent 百分比
*/
public void adjustCompSize(double percent) {
for (int i = 0; i < this.getComponentCount(); i++) {
XCreator creator = this.getXCreator(i);
WBorderLayout wlayout = this.toData();
Object constraints = wlayout.getConstraints(creator.toData());
if (ComparatorUtils.equals(BorderLayout.NORTH, constraints)) {
int northSize = (int) (this.toData().getNorthSize() * this.getScale());
Dimension dim = creator.getSize();
creator.setPreferredSize(new Dimension(dim.width, northSize));
} else if (ComparatorUtils.equals(BorderLayout.SOUTH, constraints)) {
int southSize = (int) (this.toData().getSouthSize() * this.getScale());
Dimension dim = creator.getSize();
creator.setPreferredSize(new Dimension(dim.width, southSize));
} else if (ComparatorUtils.equals(BorderLayout.EAST, constraints)) {
int eastSize = (int) (this.toData().getEastSize() * this.getScale());
Dimension dim = creator.getSize();
creator.setPreferredSize(new Dimension(eastSize, dim.height));
} else if (ComparatorUtils.equals(BorderLayout.WEST, constraints)) {
int westSize = (int) (this.toData().getWestSize() * this.getScale());
Dimension dim = creator.getSize();
creator.setPreferredSize(new Dimension(westSize, dim.height));
}
} }
}
}

72
designer-form/src/main/java/com/fr/design/designer/creator/XWFitLayout.java

@ -18,7 +18,6 @@ import com.fr.form.ui.container.WAbsoluteLayout.BoundsWidget;
import com.fr.form.ui.container.WBodyLayoutType; import com.fr.form.ui.container.WBodyLayoutType;
import com.fr.form.ui.container.WFitLayout; import com.fr.form.ui.container.WFitLayout;
import com.fr.form.ui.container.WLayout; import com.fr.form.ui.container.WLayout;
import com.fr.form.ui.widget.CRBoundsWidget;
import com.fr.general.ComparatorUtils; import com.fr.general.ComparatorUtils;
import com.fr.general.FRLogger; import com.fr.general.FRLogger;
import com.fr.general.FRScreen; import com.fr.general.FRScreen;
@ -131,7 +130,6 @@ public class XWFitLayout extends XLayoutContainer {
} }
} }
/** /**
* 直接拖动滑条改变整体像素大小时不用考虑控件的最小高度宽度内部组件全部一起缩小放大 * 直接拖动滑条改变整体像素大小时不用考虑控件的最小高度宽度内部组件全部一起缩小放大
* 只是界面显示大小改变不改变对应的BoundsWidget大小 * 只是界面显示大小改变不改变对应的BoundsWidget大小
@ -140,24 +138,28 @@ public class XWFitLayout extends XLayoutContainer {
public void adjustCreatorsWhileSlide(double percent) { public void adjustCreatorsWhileSlide(double percent) {
int count = this.getComponentCount(); int count = this.getComponentCount();
if (count == 0) { if (count == 0) {
Dimension size = new Dimension(this.toData().getContentWidth(), this.toData().getContentHeight()); Dimension size = new Dimension(this.getSize());
size.width += size.width*percent; size.width += size.width*percent;
size.height += size.height*percent; size.height += size.height*percent;
this.setSize(size); this.setSize(size);
return; return;
} }
// 初始化时还未加间隔
if (hasCalGap) {
moveContainerMargin();
moveCompInterval(backupGap);
LayoutUtils.layoutContainer(this);
}
int containerW = 0; int containerW = 0;
int containerH = 0; int containerH = 0;
int[] hors = getDataHors(); int[] hors = getHors(false);
int[] veris = getDataVeris(); int[] veris = getVeris(false);
PaddingMargin margin = new PaddingMargin(); PaddingMargin margin = toData().getMargin();
for (int i=0; i<count; i++) { for (int i=0; i<count; i++) {
XCreator creator = getXCreator(i); XCreator creator = getXCreator(i);
WFitLayout fitLayout = this.toData();
CRBoundsWidget boundsWidget = fitLayout.getBoundsWidget(creator.toData());
// 百分比和updateBoundsWidget时都会调整大小 // 百分比和updateBoundsWidget时都会调整大小
// 子组件非空时,调整界面大小、 撤销、再次打开表单,都会按屏幕百分比调整,此时必须考虑内边距 // 子组件非空时,调整界面大小、 撤销、再次打开表单,都会按屏幕百分比调整,此时必须考虑内边距
Rectangle rec = modifyCreatorPoint(boundsWidget.getBounds(), percent, hors, veris); Rectangle rec = modifyCreatorPoint(creator.getBounds(), percent, hors, veris);
if (rec.x == margin.getLeft()) { if (rec.x == margin.getLeft()) {
containerH += rec.height; containerH += rec.height;
} }
@ -174,7 +176,10 @@ public class XWFitLayout extends XLayoutContainer {
); );
updateCreatorsBackupBound(); updateCreatorsBackupBound();
// 间隔也按显示大小比例调整 // 间隔也按显示大小比例调整
if (!hasCalGap) {
moveContainerMargin();
addCompInterval(getAcualInterval()); addCompInterval(getAcualInterval());
}
LayoutUtils.layoutContainer(this); LayoutUtils.layoutContainer(this);
} }
@ -182,7 +187,6 @@ public class XWFitLayout extends XLayoutContainer {
* 调整控件的point和size,避免拖动滑块出现空隙 * 调整控件的point和size,避免拖动滑块出现空隙
*/ */
private Rectangle modifyCreatorPoint(Rectangle rec, double percent, int[] hors, int[] veris) { private Rectangle modifyCreatorPoint(Rectangle rec, double percent, int[] hors, int[] veris) {
rec = new Rectangle(rec);
int xIndex = 0, yIndex = 0; int xIndex = 0, yIndex = 0;
PaddingMargin margin = toData().getMargin(); PaddingMargin margin = toData().getMargin();
Rectangle bound = new Rectangle(rec); Rectangle bound = new Rectangle(rec);
@ -261,41 +265,6 @@ public class XWFitLayout extends XLayoutContainer {
return ArrayUtils.toPrimitive(posX.toArray(new Integer[]{posX.size()})); return ArrayUtils.toPrimitive(posX.toArray(new Integer[]{posX.size()}));
} }
public int[] getDataHors() {
List<Integer> posX = new ArrayList<Integer>();
// 保存实际大小时,组件大小已经去除内边距,此处也判断下
posX.add(0);
int width = this.toData().getContainerWidth();
posX.add(width);
for (int i = 0, len = this.toData().getWidgetCount(); i < len; i++) {
CRBoundsWidget widget = (CRBoundsWidget) this.toData().getWidget(i);
Rectangle rec = widget.getBounds();
if (!posX.contains(rec.x)) {
posX.add(rec.x);
}
}
Collections.sort(posX);
return ArrayUtils.toPrimitive(posX.toArray(new Integer[]{posX.size()}));
}
public int[] getDataVeris() {
List<Integer> posY = new ArrayList<Integer>();
// 保存实际大小时,组件大小已经去除内边距,此处也判断下
posY.add(0);
int height = this.toData().getContainerHeight();
posY.add(height);
for (int i = 0, len = this.toData().getWidgetCount(); i < len; i++) {
CRBoundsWidget boundsWidget = (CRBoundsWidget) this.toData().getWidget(i);
Rectangle rec = boundsWidget.getBounds();
if (!posY.contains(rec.y)) {
posY.add(rec.y);
}
}
Collections.sort(posY);
return ArrayUtils.toPrimitive(posY.toArray(new Integer[]{posY.size()}));
}
/** /**
* 获取内部组件纵坐标值 * 获取内部组件纵坐标值
* @param isActualSize 实际大小 * @param isActualSize 实际大小
@ -322,7 +291,6 @@ public class XWFitLayout extends XLayoutContainer {
return ArrayUtils.toPrimitive(posY.toArray(new Integer[]{posY.size()})); return ArrayUtils.toPrimitive(posY.toArray(new Integer[]{posY.size()}));
} }
/** /**
* 是否能缩小 * 是否能缩小
* @param percent 百分比 * @param percent 百分比
@ -893,14 +861,12 @@ public class XWFitLayout extends XLayoutContainer {
} }
super.add(comp, constraints); super.add(comp, constraints);
XCreator creator = (XCreator) comp; XCreator creator = (XCreator) comp;
creator.setScale(this.getScale());
dealDirections(creator, false); dealDirections(creator, false);
} }
private void add(Component comp, Object constraints, boolean isInit) { private void add(Component comp, Object constraints, boolean isInit) {
super.add(comp, constraints); super.add(comp, constraints);
XCreator creator = (XCreator) comp; XCreator creator = (XCreator) comp;
creator.setScale(this.getScale());
dealDirections(creator, isInit); dealDirections(creator, isInit);
} }
@ -1371,14 +1337,4 @@ public class XWFitLayout extends XLayoutContainer {
} }
} }
} }
/**
* 自适应布局的缩放
*
* @param percent 百分比
*/
@Override
public void adjustCompSize(double percent) {
this.adjustCreatorsWhileSlide(percent);
}
} }

6
designer-form/src/main/java/com/fr/design/designer/creator/cardlayout/XCardSwitchButton.java

@ -237,7 +237,6 @@ public class XCardSwitchButton extends XButton {
layout.setIndex(--tabFitIndex); layout.setIndex(--tabFitIndex);
} }
} }
tagLayout.setTabsAndAdjust();
} }
@ -338,8 +337,7 @@ public class XCardSwitchButton extends XButton {
String titleText = button.getText(); String titleText = button.getText();
this.setButtonText(titleText); this.setButtonText(titleText);
FRFont font = widgetTitle.getFrFont(); FRFont font = widgetTitle.getFrFont();
int fontsize = font.getSize() + FONT_SIZE_ADJUST; FRFont newFont = FRFont.getInstance(font.getName(),font.getStyle(),font.getSize() + FONT_SIZE_ADJUST);
FRFont newFont = FRFont.getInstance(font.getName(),font.getStyle(), (float) (fontsize * getScale()));
UILabel label = this.getContentLabel(); UILabel label = this.getContentLabel();
label.setFont(newFont); label.setFont(newFont);
label.setForeground(font.getForeground()); label.setForeground(font.getForeground());
@ -461,7 +459,7 @@ public class XCardSwitchButton extends XButton {
TitlePacker title = getWidgetTitle(); TitlePacker title = getWidgetTitle();
FRFont font = title.getFrFont(); FRFont font = title.getFrFont();
int fontSize = font.getSize() + FONT_SIZE_ADJUST; int fontSize = font.getSize() + FONT_SIZE_ADJUST;
FRFont newFont = FRFont.getInstance(font.getName(), font.getStyle(), (float) (fontSize * getScale())); FRFont newFont = FRFont.getInstance(font.getName(), font.getStyle(), fontSize);
FontMetrics fm = GraphHelper.getFontMetrics(newFont); FontMetrics fm = GraphHelper.getFontMetrics(newFont);
for (int i = 0; i < titleText.length(); i++) { for (int i = 0; i < titleText.length(); i++) {
titleStringBuf.append(titleText.charAt(i)); titleStringBuf.append(titleText.charAt(i));

2
designer-form/src/main/java/com/fr/design/designer/creator/cardlayout/XWCardTagLayout.java

@ -290,6 +290,7 @@ public class XWCardTagLayout extends XWHorizontalBoxLayout {
@Override @Override
public void doLayout() { public void doLayout() {
setTabsAndAdjust();
//设置布局 //设置布局
super.doLayout(); super.doLayout();
} }
@ -381,6 +382,7 @@ public class XWCardTagLayout extends XWHorizontalBoxLayout {
} else { } else {
adjustTabsV(parent, tabLength, cardWidth, cardHeight); adjustTabsV(parent, tabLength, cardWidth, cardHeight);
} }
fixTitleLayout(parent);
} }
public void adjustTabsH(XLayoutContainer parent, int tabLength, Map<Integer, Integer> width, Map<Integer, Integer> height) { public void adjustTabsH(XLayoutContainer parent, int tabLength, Map<Integer, Integer> width, Map<Integer, Integer> height) {

13
designer-form/src/main/java/com/fr/design/designer/creator/cardlayout/XWTabFitLayout.java

@ -8,11 +8,15 @@ import com.fr.design.designer.creator.CRPropertyDescriptor;
import com.fr.design.designer.creator.XCreator; import com.fr.design.designer.creator.XCreator;
import com.fr.design.designer.creator.XLayoutContainer; import com.fr.design.designer.creator.XLayoutContainer;
import com.fr.design.designer.creator.XWFitLayout; import com.fr.design.designer.creator.XWFitLayout;
import com.fr.design.designer.properties.mobile.MobileBooKMarkUsePropertyUI;
import com.fr.design.designer.properties.mobile.MobileBookMarkPropertyUI;
import com.fr.design.form.util.FormDesignerUtils;
import com.fr.design.form.util.XCreatorConstants; import com.fr.design.form.util.XCreatorConstants;
import com.fr.design.fun.WidgetPropertyUIProvider; import com.fr.design.fun.WidgetPropertyUIProvider;
import com.fr.design.gui.imenu.UIPopupMenu; import com.fr.design.gui.imenu.UIPopupMenu;
import com.fr.design.mainframe.FormDesigner; import com.fr.design.mainframe.FormDesigner;
import com.fr.design.mainframe.FormHierarchyTreePane; import com.fr.design.mainframe.FormHierarchyTreePane;
import com.fr.design.mainframe.WidgetPropertyPane;
import com.fr.design.mainframe.widget.editors.ButtonTypeEditor; import com.fr.design.mainframe.widget.editors.ButtonTypeEditor;
import com.fr.design.mainframe.widget.editors.ImgBackgroundEditor; import com.fr.design.mainframe.widget.editors.ImgBackgroundEditor;
import com.fr.design.utils.gui.LayoutUtils; import com.fr.design.utils.gui.LayoutUtils;
@ -357,7 +361,14 @@ public class XWTabFitLayout extends XWFitLayout {
return parent == null ? null : parent.findNearestFit(); return parent == null ? null : parent.findNearestFit();
} }
/**
* 非顶层自适应布局的缩放
* @param percent 百分比
*/
@Override
public void adjustCompSize(double percent) {
this.adjustCreatorsWhileSlide(percent);
}
/** /**
* 该布局需要隐藏无需对边框进行操作 * 该布局需要隐藏无需对边框进行操作

32
designer-form/src/main/java/com/fr/design/mainframe/EditingMouseListener.java

@ -139,6 +139,9 @@ public class EditingMouseListener extends MouseInputAdapter {
* @param e 鼠标事件 * @param e 鼠标事件
*/ */
public void mousePressed(MouseEvent e) { public void mousePressed(MouseEvent e) {
int oldX = e.getX();
int oldY = e.getY();
offsetEventPoint(e);
if (!stopEditing()) { if (!stopEditing()) {
return; return;
} }
@ -171,6 +174,13 @@ public class EditingMouseListener extends MouseInputAdapter {
stateModel.startResizing(e); stateModel.startResizing(e);
} }
} }
e.translatePoint(oldX - e.getX(), oldY - e.getY());
}
private void offsetEventPoint(MouseEvent e){
int x = designer.getRelativeX(e.getX());
int y = designer.getRelativeY(e.getY());
e.translatePoint(x - e.getX(), y - e.getY());
} }
/** /**
@ -179,6 +189,9 @@ public class EditingMouseListener extends MouseInputAdapter {
* @param e 鼠标事件 * @param e 鼠标事件
*/ */
public void mouseReleased(MouseEvent e) { public void mouseReleased(MouseEvent e) {
int oldX = e.getX();
int oldY = e.getY();
offsetEventPoint(e);
if (e.isPopupTrigger()) { if (e.isPopupTrigger()) {
if (stateModel.isDragging()) { if (stateModel.isDragging()) {
stateModel.draggingCancel(); stateModel.draggingCancel();
@ -199,6 +212,7 @@ public class EditingMouseListener extends MouseInputAdapter {
} }
lastPressEvent = null; lastPressEvent = null;
lastXCreator = null; lastXCreator = null;
e.translatePoint(oldX - e.getX(), oldY - e.getY());
} }
private void mouseDraggingRelease(MouseEvent e) { private void mouseDraggingRelease(MouseEvent e) {
@ -261,6 +275,9 @@ public class EditingMouseListener extends MouseInputAdapter {
* @param e 鼠标事件 * @param e 鼠标事件
*/ */
public void mouseMoved(MouseEvent e) { public void mouseMoved(MouseEvent e) {
int oldX = e.getX();
int oldY = e.getY();
offsetEventPoint(e);
XCreator component = designer.getComponentAt(e); XCreator component = designer.getComponentAt(e);
setCoverPaneNotDisplay(component, e, false); setCoverPaneNotDisplay(component, e, false);
@ -299,8 +316,9 @@ public class EditingMouseListener extends MouseInputAdapter {
} }
processChartEditorMouseMove(component, e); processChartEditorMouseMove(component, e);
e.translatePoint(oldX - e.getX(), oldY - e.getY());
designer.repaint(); designer.repaint();
} }
private void elementCaseMouseMoved(MouseEvent e, XCreator component) { private void elementCaseMouseMoved(MouseEvent e, XCreator component) {
@ -436,6 +454,9 @@ public class EditingMouseListener extends MouseInputAdapter {
* @param e 鼠标事件 * @param e 鼠标事件
*/ */
public void mouseDragged(MouseEvent e) { public void mouseDragged(MouseEvent e) {
int oldX = e.getX();
int oldY = e.getY();
offsetEventPoint(e);
if (DesignerMode.isAuthorityEditing()) { if (DesignerMode.isAuthorityEditing()) {
return; return;
} }
@ -485,6 +506,7 @@ public class EditingMouseListener extends MouseInputAdapter {
lastPressEvent = null; lastPressEvent = null;
} }
} }
e.translatePoint(oldX - e.getX(), oldY - e.getY());
designer.repaint(); designer.repaint();
} }
@ -556,6 +578,9 @@ public class EditingMouseListener extends MouseInputAdapter {
* @param e 鼠标事件 * @param e 鼠标事件
*/ */
public void mouseClicked(MouseEvent e) { public void mouseClicked(MouseEvent e) {
int oldX = e.getX();
int oldY = e.getY();
offsetEventPoint(e);
XCreator creator = designer.getComponentAt(e); XCreator creator = designer.getComponentAt(e);
boolean isValidButton = e.getButton() == MouseEvent.BUTTON1 || e.getButton() == MouseEvent.BUTTON3; boolean isValidButton = e.getButton() == MouseEvent.BUTTON1 || e.getButton() == MouseEvent.BUTTON3;
@ -575,6 +600,7 @@ public class EditingMouseListener extends MouseInputAdapter {
} }
creator.doLayout(); creator.doLayout();
} }
e.translatePoint(oldX - e.getX(), oldY - e.getY());
LayoutUtils.layoutRootContainer(designer.getRootComponent()); LayoutUtils.layoutRootContainer(designer.getRootComponent());
} }
@ -585,10 +611,14 @@ public class EditingMouseListener extends MouseInputAdapter {
* @param e 鼠标事件 * @param e 鼠标事件
*/ */
public void mouseExited(MouseEvent e) { public void mouseExited(MouseEvent e) {
int oldX = e.getX();
int oldY = e.getY();
offsetEventPoint(e);
if (designer.getCursor().getType() != Cursor.DEFAULT_CURSOR && !(e.isShiftDown() || InputEventBaseOnOS.isControlDown(e))) { if (designer.getCursor().getType() != Cursor.DEFAULT_CURSOR && !(e.isShiftDown() || InputEventBaseOnOS.isControlDown(e))) {
designer.setCursor(Cursor.getDefaultCursor()); designer.setCursor(Cursor.getDefaultCursor());
} }
cancelPromptWidgetForbidEnter(); cancelPromptWidgetForbidEnter();
e.translatePoint(oldX - e.getX(), oldY - e.getY());
} }
/** /**

142
designer-form/src/main/java/com/fr/design/mainframe/FormArea.java

@ -2,6 +2,7 @@ package com.fr.design.mainframe;
import com.fr.base.ScreenResolution; import com.fr.base.ScreenResolution;
import com.fr.common.inputevent.InputEventBaseOnOS; import com.fr.common.inputevent.InputEventBaseOnOS;
import com.fr.design.designer.beans.events.DesignerEditListener;
import com.fr.design.designer.beans.events.DesignerEvent; import com.fr.design.designer.beans.events.DesignerEvent;
import com.fr.design.designer.creator.XCreator; import com.fr.design.designer.creator.XCreator;
import com.fr.design.designer.creator.XLayoutContainer; import com.fr.design.designer.creator.XLayoutContainer;
@ -46,6 +47,7 @@ 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.KeyEvent; import java.awt.event.KeyEvent;
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;
@ -75,6 +77,8 @@ public class FormArea extends JComponent implements ScrollRulerComponent {
private UINumberField heightPane; private UINumberField heightPane;
private JFormSliderPane slidePane; private JFormSliderPane slidePane;
private boolean isValid = true; private boolean isValid = true;
// 初始时滑块值为100,托动后的值设为START_VALUE;
private double START_VALUE = DEFAULT_SLIDER;
private int resolution = ScreenResolution.getScreenResolution(); private int resolution = ScreenResolution.getScreenResolution();
private double screenValue; private double screenValue;
@ -115,7 +119,6 @@ public class FormArea extends JComponent implements ScrollRulerComponent {
this.setFocusTraversalKeysEnabled(false); this.setFocusTraversalKeysEnabled(false);
this.addMouseWheelListener(showValSpinnerMouseWheelListener); this.addMouseWheelListener(showValSpinnerMouseWheelListener);
registerShortCutKey(); registerShortCutKey();
} }
/** /**
@ -173,14 +176,14 @@ public class FormArea extends JComponent implements ScrollRulerComponent {
double[] rowSize = {f}; double[] rowSize = {f};
double[] columnSize = {p, f, p, p, p, p, p, f, p}; double[] columnSize = {p, f, p, p, p, p, p, f, p};
UILabel tipsPane = new UILabel("form"); UILabel tipsPane = new UILabel("form");
tipsPane.setPreferredSize(new Dimension(375, 0)); tipsPane.setPreferredSize(new Dimension(265, 0));
widthPane = new UINumberField(); widthPane = new UINumberField();
widthPane.setPreferredSize(new Dimension(60, 0)); widthPane.setPreferredSize(new Dimension(60, 0));
heightPane = new UINumberField(); heightPane = new UINumberField();
heightPane.setPreferredSize(new Dimension(60, 0)); heightPane.setPreferredSize(new Dimension(60, 0));
slidePane = JFormSliderPane.getInstance(); slidePane = JFormSliderPane.getInstance();
slidePane.setPreferredSize(new Dimension(375, 20)); slidePane.setPreferredSize(new Dimension(326, 20));
JPanel resizePane = TableLayoutHelper.createCommonTableLayoutPane( JPanel resizePane = TableLayoutHelper.createCommonTableLayoutPane(
new JComponent[][]{{tipsPane, new UILabel(), widthPane, new JComponent[][]{{tipsPane, new UILabel(), widthPane,
@ -198,6 +201,7 @@ public class FormArea extends JComponent implements ScrollRulerComponent {
slidePane.addValueChangeListener(showValSpinnerChangeListener); slidePane.addValueChangeListener(showValSpinnerChangeListener);
} }
private void setWidgetsConfig() { private void setWidgetsConfig() {
widthPane.setHorizontalAlignment(widthPane.CENTER); widthPane.setHorizontalAlignment(widthPane.CENTER);
heightPane.setHorizontalAlignment(heightPane.CENTER); heightPane.setHorizontalAlignment(heightPane.CENTER);
@ -218,19 +222,16 @@ public class FormArea extends JComponent implements ScrollRulerComponent {
value = value > SHOWVALMAX ? SHOWVALMAX : value; value = value > SHOWVALMAX ? SHOWVALMAX : value;
value = value < SHOWVALMIN ? SHOWVALMIN : value; value = value < SHOWVALMIN ? SHOWVALMIN : value;
scale((int) value); scale((int) value);
JTemplate form = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate();
if (form != null) {
form.fireTargetModified();
}
} }
}; };
private void scale(int value){ private void scale(int value){
this.designer.setResolution(value); this.designer.setScale(value / DEFAULT_SLIDER);
this.designer.getArea().resolution = value; FormArea.this.validate();
reCalculateRoot(value, true); this.designer.repaint();
} }
/** /**
* 返回当前的屏幕分辨率对应的百分比值 * 返回当前的屏幕分辨率对应的百分比值
* *
@ -255,6 +256,7 @@ public class FormArea extends JComponent implements ScrollRulerComponent {
this.screenValue = FRScreen.getDesignScreenByDimension(scrnsize).getValue(); this.screenValue = FRScreen.getDesignScreenByDimension(scrnsize).getValue();
XLayoutContainer root = FormArea.this.designer.getRootComponent(); XLayoutContainer root = FormArea.this.designer.getRootComponent();
// 7.1.1不放缩放滑块,但表单大小仍按屏幕分辨率调整 // 7.1.1不放缩放滑块,但表单大小仍按屏幕分辨率调整
// slidePane.populateBean(screenValue);
if (root.acceptType(XWFitLayout.class)) { if (root.acceptType(XWFitLayout.class)) {
XWFitLayout layout = (XWFitLayout) root; XWFitLayout layout = (XWFitLayout) root;
if ( !AssistUtils.equals(screenValue, DEFAULT_SLIDER) ) { if ( !AssistUtils.equals(screenValue, DEFAULT_SLIDER) ) {
@ -262,7 +264,7 @@ public class FormArea extends JComponent implements ScrollRulerComponent {
} else { } else {
// 组件间隔啊 // 组件间隔啊
// REPORT-2585 原有的逻辑导致嵌套的tab中的间隔加不上去,会在后续拖动的过程中出问题 // REPORT-2585 原有的逻辑导致嵌套的tab中的间隔加不上去,会在后续拖动的过程中出问题
reCalculateDefaultRoot(); reCalculateDefaultRoot(screenValue, true);
} }
} }
LayoutUtils.layoutContainer(root); LayoutUtils.layoutContainer(root);
@ -382,14 +384,16 @@ public class FormArea extends JComponent implements ScrollRulerComponent {
* 修改大小后再根据屏幕分辨率调整下 * 修改大小后再根据屏幕分辨率调整下
*/ */
private void doReCalculateRoot(int width, int height, XWFitLayout layout) { private void doReCalculateRoot(int width, int height, XWFitLayout layout) {
// double value = slidePane.updateBean();
//重置滑块的值为默认值100 //重置滑块的值为默认值100
START_VALUE = DEFAULT_SLIDER;
if ( AssistUtils.equals(screenValue, DEFAULT_SLIDER) ) { if ( AssistUtils.equals(screenValue, DEFAULT_SLIDER) ) {
layout.getParent().setSize(width, height + designer.getParaHeight()); layout.getParent().setSize(width, height + designer.getParaHeight());
FormArea.this.validate();
} else { } else {
layout.setBackupGap(screenValue / DEFAULT_SLIDER); layout.setBackupGap(screenValue / DEFAULT_SLIDER);
reCalculateRoot(screenValue, false);
} }
reCalculateRoot(slidePane.getShowValue(), true);
} }
/** /**
@ -399,60 +403,71 @@ public class FormArea extends JComponent implements ScrollRulerComponent {
* @param value * @param value
*/ */
private void reCalculateRoot(double value, boolean needCalculateParaHeight) { private void reCalculateRoot(double value, boolean needCalculateParaHeight) {
double percent = (value - DEFAULT_SLIDER) / DEFAULT_SLIDER; if ( AssistUtils.equals(value, START_VALUE) ) {
double scale = value / DEFAULT_SLIDER; return;
}
double percent = (value - START_VALUE) / START_VALUE;
XLayoutContainer root = FormArea.this.designer.getRootComponent(); XLayoutContainer root = FormArea.this.designer.getRootComponent();
if (root.acceptType(XWFitLayout.class)) { if (root.acceptType(XWFitLayout.class)) {
XWFitLayout layout = (XWFitLayout) root; XWFitLayout layout = (XWFitLayout) root;
layout.setContainerPercent(scale); layout.setContainerPercent(value / DEFAULT_SLIDER);
layout.adjustCompSize(percent);
traverAndAdjust(layout, percent); traverAndAdjust(layout, percent);
layout.adjustCreatorsWhileSlide(percent);
// 拖动滑块,先将内部组件百分比大小计算,再计算容器大小 // 拖动滑块,先将内部组件百分比大小计算,再计算容器大小
Dimension d = new Dimension(layout.getWidth(), layout.getHeight()); Dimension d = new Dimension(layout.getWidth(), layout.getHeight());
XWBorderLayout parent = (XWBorderLayout) layout.getParent();
root.setScale(scale);
// 自适应布局的父层是border // 自适应布局的父层是border
if (parent != null) { if (layout.getParent() != null) {
parent.setScale(scale); int paraHeight = designer.getParaHeight();
int paraHeight = parent.toData().getNorthSize(); if (needCalculateParaHeight && paraHeight > 0) {
XLayoutContainer paraComponent = designer.getParaComponent(); designer.setParaHeight(paraHeight);
if (needCalculateParaHeight && paraComponent != null) { XWBorderLayout parent = (XWBorderLayout) layout.getParent();
paraComponent.setScale(scale); parent.toData().setNorthSize(paraHeight);
this.designer.setParaHeight(paraHeight);
paraComponent.setPreferredSize(new Dimension(d.width, this.designer.getParaHeight()));
paraComponent.adjustCompSize( percent);
parent.removeAll(); parent.removeAll();
parent.add(paraComponent, WBorderLayout.NORTH); parent.add(designer.getParaComponent(), WBorderLayout.NORTH);
parent.add(root, WBorderLayout.CENTER); parent.add(designer.getRootComponent(), WBorderLayout.CENTER);
root.setBounds(0, this.designer.getParaHeight(), d.width, d.height);
} }
parent.setSize(d.width, d.height + this.designer.getParaHeight()); layout.getParent().setSize(d.width, d.height + paraHeight);
// 调整自适应布局大小后,同步调整参数界面和border大小,此时刷新下formArea // 调整自适应布局大小后,同步调整参数界面和border大小,此时刷新下formArea
FormArea.this.validate(); FormArea.this.validate();
LayoutUtils.layoutRootContainer(designer.getRootComponent());
} }
START_VALUE = value;
} }
} }
/** /**
* 按照界面大小的百分比值调整root大小 * 按照界面大小的百分比值调整root大小
* *
* @param needCalculateParaHeight 是否需要调整参数界面高度
* @param value
*/ */
private void reCalculateDefaultRoot() { private void reCalculateDefaultRoot(double value, boolean needCalculateParaHeight) {
XLayoutContainer root = FormArea.this.designer.getRootComponent(); XLayoutContainer root = FormArea.this.designer.getRootComponent();
if (root.acceptType(XWFitLayout.class)) { if (root.acceptType(XWFitLayout.class)) {
XWFitLayout layout = (XWFitLayout) root; XWFitLayout layout = (XWFitLayout) root;
Dimension dimension = layout.getSize(); layout.setContainerPercent(1.0);
double widthScale = 960D / dimension.width; traverAndAdjust(layout, 0.0);
double heightScale = 960D / dimension.height; layout.adjustCreatorsWhileSlide(0.0);
final double scaleValue = Math.min(widthScale, heightScale);
int value = (int) (scaleValue * 100); // 拖动滑块,先将内部组件百分比大小计算,再计算容器大小
slidePane.setShowValue(value);
if (value == 100) { Dimension d = new Dimension(layout.getWidth(), layout.getHeight());
return; // 自适应布局的父层是border
if (layout.getParent() != null) {
int paraHeight = designer.getParaHeight();
if (needCalculateParaHeight && paraHeight > 0) {
designer.setParaHeight(paraHeight);
XWBorderLayout parent = (XWBorderLayout) layout.getParent();
parent.toData().setNorthSize(paraHeight);
parent.removeAll();
parent.add(designer.getParaComponent(), WBorderLayout.NORTH);
parent.add(designer.getRootComponent(), WBorderLayout.CENTER);
}
layout.getParent().setSize(d.width, d.height + paraHeight);
// 调整自适应布局大小后,同步调整参数界面和border大小,此时刷新下formArea
FormArea.this.validate();
} }
scale(value);
} }
} }
@ -462,7 +477,6 @@ public class FormArea extends JComponent implements ScrollRulerComponent {
Object object = creator.getComponent(i); Object object = creator.getComponent(i);
if (object instanceof XCreator) { if (object instanceof XCreator) {
XCreator temp = (XCreator) object; XCreator temp = (XCreator) object;
temp.setScale(1 + percent);
temp.adjustCompSize(percent); temp.adjustCompSize(percent);
traverAndAdjust(temp, percent); traverAndAdjust(temp, percent);
} }
@ -484,17 +498,17 @@ public class FormArea extends JComponent implements ScrollRulerComponent {
* 鼠标滚轮事件 * 鼠标滚轮事件
* 由于表单设计界面要求 容器大小大于界面时滚动条才可以拖动所以不支持滚动无限往下滚 * 由于表单设计界面要求 容器大小大于界面时滚动条才可以拖动所以不支持滚动无限往下滚
*/ */
// @Override @Override
// protected void processMouseWheelEvent(java.awt.event.MouseWheelEvent evt) { protected void processMouseWheelEvent(java.awt.event.MouseWheelEvent evt) {
// int id = evt.getID(); int id = evt.getID();
// switch (id) { switch (id) {
// case MouseEvent.MOUSE_WHEEL: { case MouseEvent.MOUSE_WHEEL: {
// onMouseWheelScroll(evt); onMouseWheelScroll(evt);
// break; break;
// } }
// default: default:
// } }
// } }
private void onMouseWheelScroll(MouseWheelEvent evt) { private void onMouseWheelScroll(MouseWheelEvent evt) {
int value = this.verScrollBar.getValue() + evt.getWheelRotation() * ROTATIONS; int value = this.verScrollBar.getValue() + evt.getWheelRotation() * ROTATIONS;
@ -559,9 +573,9 @@ public class FormArea extends JComponent implements ScrollRulerComponent {
layout(); layout();
if (isValid) { if (isValid) {
XLayoutContainer root = designer.getRootComponent(); XLayoutContainer root = designer.getRootComponent();
setScrollBarProperties(root.getWidth() - designer.getWidth(), horScrollBar, horizontalValue); setScrollBarProperties((int) (root.getWidth()*designer.getScale() - designer.getWidth()), horScrollBar, horizontalValue);
//计算滚动条值的时候应该算上参数面板的高度 //计算滚动条值的时候应该算上参数面板的高度
setScrollBarProperties(designer.getParaHeight() + root.getHeight() - designer.getHeight(), verScrollBar, verticalValue); setScrollBarProperties((int) (designer.getParaHeight() + root.getHeight()*designer.getScale() - designer.getHeight()), verScrollBar, verticalValue);
} }
} }
@ -765,11 +779,15 @@ public class FormArea extends JComponent implements ScrollRulerComponent {
layout.moveContainerMargin(); layout.moveContainerMargin();
layout.addCompInterval(layout.getAcualInterval()); layout.addCompInterval(layout.getAcualInterval());
} else if (designer.getRootComponent().acceptType(XWFitLayout.class)) { } else if (designer.getRootComponent().acceptType(XWFitLayout.class)) {
reCalculateRoot(slide, true); START_VALUE = DEFAULT_SLIDER;
reCalculateRoot(screenValue, true);
// slidePane.populateBean(slide); // slidePane.populateBean(slide);
} }
this.slidePane.setShowValue((int) slide);
} }
/** /**
* 计算滚动条的值和max * 计算滚动条的值和max
* *
@ -836,10 +854,8 @@ public class FormArea extends JComponent implements ScrollRulerComponent {
if (hbarPreferredSize == null) { if (hbarPreferredSize == null) {
throw new IllegalArgumentException("hbarPreferredSize can not be null!"); throw new IllegalArgumentException("hbarPreferredSize can not be null!");
} }
int maxHeight = bottom - hbarPreferredSize.height - resize.height - TOPGAP * 2; DESIGNERHEIGHT = bottom - hbarPreferredSize.height - resize.height - TOPGAP * 2;
int maxWidth = right - vbarPreferredSize.width; DESIGNERWIDTH = right - vbarPreferredSize.width;
DESIGNERWIDTH = DESIGNERWIDTH > maxWidth ? maxWidth : DESIGNERWIDTH;
DESIGNERHEIGHT = DESIGNERHEIGHT > maxHeight ? maxHeight : DESIGNERHEIGHT;
int designerLeft = left + (verScrollBar.getX() - DESIGNERWIDTH) / 2; int designerLeft = left + (verScrollBar.getX() - DESIGNERWIDTH) / 2;
int designerTop = top + (horScrollBar.getY() - DESIGNERHEIGHT) / 2; int designerTop = top + (horScrollBar.getY() - DESIGNERHEIGHT) / 2;
rec = new Rectangle(designerLeft, designerTop, DESIGNERWIDTH, DESIGNERHEIGHT); rec = new Rectangle(designerLeft, designerTop, DESIGNERWIDTH, DESIGNERHEIGHT);

6
designer-form/src/main/java/com/fr/design/mainframe/FormCreatorDropTarget.java

@ -240,7 +240,7 @@ public class FormCreatorDropTarget extends DropTarget {
@Override @Override
public synchronized void dragEnter(DropTargetDragEvent dtde) { public synchronized void dragEnter(DropTargetDragEvent dtde) {
Point loc = dtde.getLocation(); Point loc = dtde.getLocation();
this.entering(loc.x, loc.y); this.entering(designer.getRelativeX(loc.x), designer.getRelativeY(loc.y));
} }
/** /**
@ -251,7 +251,7 @@ public class FormCreatorDropTarget extends DropTarget {
@Override @Override
public synchronized void dragOver(DropTargetDragEvent dtde) { public synchronized void dragOver(DropTargetDragEvent dtde) {
Point loc = dtde.getLocation(); Point loc = dtde.getLocation();
hovering(loc.x, loc.y); hovering(designer.getRelativeX(loc.x), designer.getRelativeY(loc.y));
} }
/** /**
@ -282,7 +282,7 @@ public class FormCreatorDropTarget extends DropTarget {
@Override @Override
public synchronized void drop(DropTargetDropEvent dtde) { public synchronized void drop(DropTargetDropEvent dtde) {
Point loc = dtde.getLocation(); Point loc = dtde.getLocation();
this.adding(loc.x, loc.y); this.adding(designer.getRelativeX(loc.x), designer.getRelativeY(loc.y));
//针对在表单中拖入一个控件直接ctrl+s无反应 //针对在表单中拖入一个控件直接ctrl+s无反应
designer.requestFocus(); designer.requestFocus();
} }

67
designer-form/src/main/java/com/fr/design/mainframe/FormDesigner.java

@ -103,6 +103,9 @@ public class FormDesigner extends TargetComponent<Form> implements TreeSelection
protected static final ArrayList<String> NAME_ARRAY_LIST = new ArrayList<String>( protected static final ArrayList<String> NAME_ARRAY_LIST = new ArrayList<String>(
Arrays.asList(new String[]{com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Form_M_Edit_Cut"), com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Form_M_Edit_Copy"), com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_M_Edit_Delete")}) Arrays.asList(new String[]{com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Form_M_Edit_Cut"), com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Form_M_Edit_Copy"), com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_M_Edit_Delete")})
); );
private double scale = 1.0D;
//底层容器的默认大小 //底层容器的默认大小
protected static final Dimension LARGE_PREFERRED_SIZE = new Dimension(WBorderLayout.DEFAULT_WIDTH, WBorderLayout.DEFAULT_HEIGHT); protected static final Dimension LARGE_PREFERRED_SIZE = new Dimension(WBorderLayout.DEFAULT_WIDTH, WBorderLayout.DEFAULT_HEIGHT);
private int paraHeight = 0; private int paraHeight = 0;
@ -167,7 +170,6 @@ public class FormDesigner extends TargetComponent<Form> implements TreeSelection
setFocusTraversalKeysEnabled(false); setFocusTraversalKeysEnabled(false);
this.setOpaque(true); this.setOpaque(true);
this.setBackground(Color.WHITE); this.setBackground(Color.WHITE);
// 初始化 // 初始化
edit = new CreatorEventListenerTable(); edit = new CreatorEventListenerTable();
selectionModel = new SelectionModel(this); selectionModel = new SelectionModel(this);
@ -185,6 +187,11 @@ public class FormDesigner extends TargetComponent<Form> implements TreeSelection
populateParameterPropertyPane(); populateParameterPropertyPane();
} }
public void paintBorder(Graphics g){
//不绘制designer的边框
}
/** /**
* 刷新控件树面板 * 刷新控件树面板
*/ */
@ -493,12 +500,12 @@ public class FormDesigner extends TargetComponent<Form> implements TreeSelection
public void setParaHeight(int height) { public void setParaHeight(int height) {
XWBorderLayout container = (XWBorderLayout) getTopContainer(); XWBorderLayout container = (XWBorderLayout) getTopContainer();
container.toData().setNorthSize(height); container.toData().setNorthSize(height);
int displayHeight = (int) (height * container.getScale()); container.setSize(container.getWidth(), container.getHeight() + height - getParaHeight());
container.setSize(container.getWidth(), container.getHeight() + displayHeight - getParaHeight()); paraHeight = height;
paraHeight = displayHeight;
} }
/** /**
* 删除参数界面 * 删除参数界面
*/ */
@ -986,8 +993,11 @@ public class FormDesigner extends TargetComponent<Form> implements TreeSelection
@Nullable @Nullable
public XCreator getComponentAt(int x, int y, XCreator[] except) { public XCreator getComponentAt(int x, int y, XCreator[] except) {
XLayoutContainer container = y < paraHeight - formArea.getVerticalValue() ? paraComponent : rootComponent; XLayoutContainer container = y + this.getPaintY() < paraHeight - formArea.getVerticalValue() ? paraComponent : rootComponent;
XCreator comp = xCreatorAt(x + formArea.getHorizontalValue(), y + formArea.getVerticalValue(), container, if (container == null) {
container = rootComponent;
}
XCreator comp = xCreatorAt(x + (int)(formArea.getHorizontalValue()/scale), (int)(y + formArea.getVerticalValue()/scale), container,
except); except);
return comp == null ? container : comp; return comp == null ? container : comp;
} }
@ -1550,4 +1560,49 @@ public class FormDesigner extends TargetComponent<Form> implements TreeSelection
public int getResolution() { public int getResolution() {
return this.resolution; return this.resolution;
} }
public double getScale() {
return scale;
}
public void setScale(double scale) {
this.scale = scale;
}
public int getPaintX() {
if (this.rootComponent == null || this.rootComponent.getParent() == null) {
return 0;
}
int width = this.rootComponent.getParent().getWidth();
int x = (int) ((this.getWidth() - width * scale) / 2);
return Math.max(x, 0);
}
public int getPaintY() {
if (this.rootComponent == null || this.rootComponent.getParent() == null) {
return 0;
}
int height = this.rootComponent.getParent().getHeight();
int y = (int) ((this.getHeight() - height * scale) / 2);
return Math.max(y, 0);
}
public int getRelativeX(int x) {
return (int) ((x - this.getPaintX()) / this.getScale());
}
public int getRelativeY(int y) {
return (int) ((y - this.getPaintY()) / this.getScale());
}
public int getHorizontalScaleValue() {
return (int) (this.getArea().getHorizontalValue() / this.scale);
}
public int getVerticalScaleValue() {
return (int) (this.getArea().getVerticalValue() / this.scale);
}
} }

38
designer-form/src/main/java/com/fr/design/mainframe/FormDesignerUI.java

@ -30,6 +30,7 @@ import java.awt.Component;
import java.awt.Graphics; import java.awt.Graphics;
import java.awt.Graphics2D; import java.awt.Graphics2D;
import java.awt.Rectangle; import java.awt.Rectangle;
import java.awt.geom.AffineTransform;
import java.awt.geom.Area; import java.awt.geom.Area;
import java.awt.geom.Rectangle2D; import java.awt.geom.Rectangle2D;
import java.util.ArrayList; import java.util.ArrayList;
@ -67,6 +68,13 @@ public class FormDesignerUI extends ComponentUI {
public void paint(final Graphics g, JComponent c) { public void paint(final Graphics g, JComponent c) {
XCreator rootComponent = designer.getRootComponent(); XCreator rootComponent = designer.getRootComponent();
this.time = (float) designer.getResolution() / ScreenResolution.getScreenResolution(); this.time = (float) designer.getResolution() / ScreenResolution.getScreenResolution();
AffineTransform at = new AffineTransform();
if (rootComponent.getParent() != null) {
at.translate(designer.getPaintX(), designer.getPaintY());
at.scale(designer.getScale(), designer.getScale());
Graphics2D g2 = (Graphics2D) g;
g2.transform(at);
}
if (rootComponent != null) { if (rootComponent != null) {
// 设计自适应界面 // 设计自适应界面
repaintFit(g, rootComponent, c); repaintFit(g, rootComponent, c);
@ -189,9 +197,13 @@ public class FormDesignerUI extends ComponentUI {
* 渲染当前正在添加的组件采用Renderer原理 * 渲染当前正在添加的组件采用Renderer原理
*/ */
private void paintAddingBean(Graphics g, final AddingModel addingModel) { private void paintAddingBean(Graphics g, final AddingModel addingModel) {
if (!addingModel.need2paint()) {
return;
}
XCreator bean = addingModel.getXCreator(); XCreator bean = addingModel.getXCreator();
int x = addingModel.getCurrentX(); int x = addingModel.getCurrentX();
int y = addingModel.getCurrentY(); int y = addingModel.getCurrentY();
int width = bean.getWidth(); int width = bean.getWidth();
int height = bean.getHeight(); int height = bean.getHeight();
Graphics clipg = g.create(x, y, width, height); Graphics clipg = g.create(x, y, width, height);
@ -254,8 +266,8 @@ public class FormDesignerUI extends ComponentUI {
return; return;
} }
Rectangle bounds = designer.getTopContainer().getBounds(); Rectangle bounds = designer.getTopContainer().getBounds();
bounds.x = -designer.getArea().getHorizontalValue(); bounds.x = -designer.getHorizontalScaleValue();
bounds.y = -designer.getArea().getVerticalValue(); bounds.y = -designer.getVerticalScaleValue();
Graphics clipg = g.create(); Graphics clipg = g.create();
clipg.clipRect(bounds.x, bounds.y, bounds.width + 1, bounds.height + 1); clipg.clipRect(bounds.x, bounds.y, bounds.width + 1, bounds.height + 1);
paintResizing(clipg); paintResizing(clipg);
@ -277,8 +289,8 @@ public class FormDesignerUI extends ComponentUI {
designer.getStateModel().paintAbsorptionline(g); designer.getStateModel().paintAbsorptionline(g);
} }
bounds.x -= designer.getArea().getHorizontalValue(); bounds.x -= designer.getHorizontalScaleValue();
bounds.y -= designer.getArea().getVerticalValue(); bounds.y -= designer.getVerticalScaleValue();
drawResizingThumbs(g, selectionModel.getSelection().getDirections(), bounds.x, bounds.y, bounds.width, bounds.height); drawResizingThumbs(g, selectionModel.getSelection().getDirections(), bounds.x, bounds.y, bounds.width, bounds.height);
//选中时边框颜色 //选中时边框颜色
@ -286,8 +298,8 @@ public class FormDesignerUI extends ComponentUI {
for (XCreator creator : selectionModel.getSelection().getSelectedCreators()) { for (XCreator creator : selectionModel.getSelection().getSelectedCreators()) {
Rectangle creatorBounds = ComponentUtils.getRelativeBounds(creator); Rectangle creatorBounds = ComponentUtils.getRelativeBounds(creator);
creatorBounds.x -= designer.getArea().getHorizontalValue(); creatorBounds.x -= designer.getHorizontalScaleValue();
creatorBounds.y -= designer.getArea().getVerticalValue(); creatorBounds.y -= designer.getVerticalScaleValue();
if (creator.acceptType(XWFitLayout.class)) { if (creator.acceptType(XWFitLayout.class)) {
resetFitlayoutBounds(creatorBounds); resetFitlayoutBounds(creatorBounds);
} else if (designer.getRootComponent().acceptType(XWFitLayout.class)) { } else if (designer.getRootComponent().acceptType(XWFitLayout.class)) {
@ -395,17 +407,11 @@ public class FormDesignerUI extends ComponentUI {
ComponentUtils.disableBuffer(component, dbcomponents); ComponentUtils.disableBuffer(component, dbcomponents);
Graphics clipg; Graphics clipg;
clipg = g.create( clipg = g.create(
-designer.getArea().getHorizontalValue(), -designer.getHorizontalScaleValue(),
-designer.getArea().getVerticalValue() + designer.getParaHeight(), -designer.getVerticalScaleValue() + designer.getParaHeight(),
parent.getSize().width + designer.getArea().getHorizontalValue(), parent.getSize().width + designer.getArea().getHorizontalValue(),
parent.getSize().height + designer.getArea().getVerticalValue()); parent.getSize().height + designer.getArea().getVerticalValue());
// BufferedImage img = CoreGraphHelper.createBufferedImage(parent.getSize().width + designer.getArea().getHorizontalValue(), parent.getSize().height + designer.getArea().getVerticalValue(), BufferedImage.TYPE_INT_RGB);
// Graphics2D g2d = img.createGraphics();
// component.printAll(g2d);
// g2d.dispose();
// g.drawImage(img,-designer.getArea().getHorizontalValue(),-designer.getArea().getVerticalValue() + designer.getParaHeight(), (int) (parent.getSize().width*time + designer.getArea().getHorizontalValue()), (int) (parent.getSize().height*time + designer.getArea().getVerticalValue()),null);
designer.paintContent(clipg); designer.paintContent(clipg);
paintWatermark((Graphics2D) clipg); paintWatermark((Graphics2D) clipg);
clipg.dispose(); clipg.dispose();
@ -427,8 +433,8 @@ public class FormDesignerUI extends ComponentUI {
// 禁止双缓冲 // 禁止双缓冲
ComponentUtils.disableBuffer(component, dbcomponents); ComponentUtils.disableBuffer(component, dbcomponents);
Graphics clipg1; Graphics clipg1;
clipg1 = g.create(-designer.getArea().getHorizontalValue(), clipg1 = g.create(-designer.getHorizontalScaleValue(),
-designer.getArea().getVerticalValue() , -designer.getVerticalScaleValue(),
parent.getSize().width + designer.getArea().getHorizontalValue(), parent.getSize().width + designer.getArea().getHorizontalValue(),
designer.getParaHeight() + designer.getArea().getVerticalValue()); designer.getParaHeight() + designer.getArea().getVerticalValue());

5
designer-form/src/main/java/com/fr/design/mainframe/FormSelection.java

@ -15,8 +15,6 @@ import com.fr.design.designer.creator.cardlayout.XWTabFitLayout;
import com.fr.design.utils.ComponentUtils; import com.fr.design.utils.ComponentUtils;
import com.fr.design.utils.gui.LayoutUtils; import com.fr.design.utils.gui.LayoutUtils;
import com.fr.form.ui.Widget; import com.fr.form.ui.Widget;
import com.fr.form.ui.container.WBorderLayout;
import com.fr.form.ui.container.WParameterLayout;
import com.fr.log.FineLoggerFactory; import com.fr.log.FineLoggerFactory;
import java.awt.LayoutManager; import java.awt.LayoutManager;
@ -239,8 +237,7 @@ public class FormSelection {
} }
creator.setBounds(rec); creator.setBounds(rec);
if (creator.acceptType(XWParameterLayout.class)) { if (creator.acceptType(XWParameterLayout.class)) {
double height = rec.getHeight() / creator.getScale(); designer.setParaHeight((int) rec.getHeight());
designer.setParaHeight((int) height);
designer.getArea().doLayout(); designer.getArea().doLayout();
} }
LayoutUtils.layoutContainer(creator); LayoutUtils.layoutContainer(creator);

17
designer-form/src/main/java/com/fr/design/widget/ui/designer/component/WidgetAbsoluteBoundPane.java

@ -8,7 +8,6 @@ import com.fr.design.mainframe.WidgetPropertyPane;
import com.fr.design.utils.gui.LayoutUtils; import com.fr.design.utils.gui.LayoutUtils;
import com.fr.design.widget.WidgetBoundsPaneFactory; import com.fr.design.widget.WidgetBoundsPaneFactory;
import com.fr.form.ui.container.WLayout; import com.fr.form.ui.container.WLayout;
import com.fr.form.ui.widget.CRBoundsWidget;
import java.awt.Rectangle; import java.awt.Rectangle;
@ -43,13 +42,15 @@ public class WidgetAbsoluteBoundPane extends WidgetBoundPane {
FormDesigner formDesigner = WidgetPropertyPane.getInstance().getEditingFormDesigner(); FormDesigner formDesigner = WidgetPropertyPane.getInstance().getEditingFormDesigner();
formDesigner.getSelectionModel().getSelection().backupBounds(); formDesigner.getSelectionModel().getSelection().backupBounds();
super.update(); super.update();
Rectangle bounds = new Rectangle((int) x.getValue(), (int) y.getValue(), (int) width.getValue(), (int) height.getValue()); Rectangle bounds = new Rectangle(creator.getBounds());
bounds.x = (int) x.getValue();
bounds.y = (int) y.getValue();
if (parent == null) { if (parent == null) {
return; return;
} }
WLayout wabs = parent.toData(); WLayout wabs = parent.toData();
wabs.setBounds(creator.toData(), bounds); wabs.setBounds(creator.toData(), bounds);
parent.adjustCompSize(parent.getScale() -1); creator.setBounds(bounds);
LayoutUtils.layoutContainer(creator); LayoutUtils.layoutContainer(creator);
XWAbsoluteLayout layout = (XWAbsoluteLayout) parent; XWAbsoluteLayout layout = (XWAbsoluteLayout) parent;
layout.updateBoundsWidget(creator); layout.updateBoundsWidget(creator);
@ -58,13 +59,14 @@ public class WidgetAbsoluteBoundPane extends WidgetBoundPane {
@Override @Override
public void limitWidth(WLayout wabs, int w, Rectangle bounds, Rectangle rec){ public void limitWidth(WLayout wabs, int w, Rectangle bounds, Rectangle rec){
bounds.width = w; bounds.width = w;
creator.setBounds(bounds);
} }
@Override @Override
public void limitHeight(WLayout wabs, int h, Rectangle bounds, Rectangle rec){ public void limitHeight(WLayout wabs, int h, Rectangle bounds, Rectangle rec){
bounds.height = h; bounds.height = h;
creator.setBounds(bounds);
} }
@Override @Override
protected String title4PopupWindow() { protected String title4PopupWindow() {
return "absoluteBound"; return "absoluteBound";
@ -73,12 +75,7 @@ public class WidgetAbsoluteBoundPane extends WidgetBoundPane {
@Override @Override
public void populate() { public void populate() {
super.populate(); super.populate();
WLayout wabs = parent.toData(); Rectangle bounds = new Rectangle(creator.getBounds());
CRBoundsWidget boundsWidget = wabs.getBoundsWidget(creator.toData());
if (boundsWidget == null){
return;
}
Rectangle bounds = boundsWidget.getBounds();
x.setValue(bounds.x); x.setValue(bounds.x);
y.setValue(bounds.y); y.setValue(bounds.y);
} }

28
designer-form/src/main/java/com/fr/design/widget/ui/designer/component/WidgetBoundPane.java

@ -20,8 +20,9 @@ import com.fr.design.widget.WidgetBoundsPaneFactory;
import com.fr.form.ui.PaddingMargin; import com.fr.form.ui.PaddingMargin;
import com.fr.form.ui.container.WFitLayout; import com.fr.form.ui.container.WFitLayout;
import com.fr.form.ui.container.WLayout; import com.fr.form.ui.container.WLayout;
import com.fr.form.ui.widget.CRBoundsWidget;
import javax.swing.JOptionPane;
import java.awt.Rectangle; import java.awt.Rectangle;
@ -78,24 +79,18 @@ public class WidgetBoundPane extends BasicPane {
} }
public void populate() { public void populate() {
WLayout wabs = parent.toData(); Rectangle bounds = new Rectangle(creator.getBounds());
CRBoundsWidget boundsWidget = wabs.getBoundsWidget(creator.toData());
if (boundsWidget == null){
return;
}
Rectangle bounds = new Rectangle(boundsWidget.getBounds());
width.setValue(bounds.width); width.setValue(bounds.width);
height.setValue(bounds.height); height.setValue(bounds.height);
} }
public void fix() { public void fix() {
WLayout wabs = parent.toData(); Rectangle bounds = new Rectangle(creator.getBounds());
CRBoundsWidget boundsWidget = wabs.getBoundsWidget(creator.toData());
Rectangle bounds = new Rectangle(boundsWidget.getBounds());
creator.setBackupBound(creator.getBounds()); creator.setBackupBound(creator.getBounds());
int w = (int) width.getValue(); int w = (int) width.getValue();
int h = (int) height.getValue(); int h = (int) height.getValue();
Rectangle rec = ComponentUtils.getRelativeBounds(parent); Rectangle rec = ComponentUtils.getRelativeBounds(parent);
WLayout wabs = parent.toData();
if (bounds.width != w) { if (bounds.width != w) {
limitWidth(wabs, w, bounds, rec); limitWidth(wabs, w, bounds, rec);
} }
@ -106,27 +101,25 @@ public class WidgetBoundPane extends BasicPane {
public void adjustComponents(Rectangle bounds, int difference, int row) { public void adjustComponents(Rectangle bounds, int difference, int row) {
double scale = parent.getScale();
FormDesigner formDesigner = WidgetPropertyPane.getInstance().getEditingFormDesigner(); FormDesigner formDesigner = WidgetPropertyPane.getInstance().getEditingFormDesigner();
Rectangle backupBounds = getBound(); Rectangle backupBounds = getBound();
FRFitLayoutAdapter layoutAdapter = (FRFitLayoutAdapter) AdapterBus.searchLayoutAdapter(formDesigner, creator); FRFitLayoutAdapter layoutAdapter = (FRFitLayoutAdapter) AdapterBus.searchLayoutAdapter(formDesigner, creator);
if (layoutAdapter != null) { if (layoutAdapter != null) {
layoutAdapter.setEdit(true); layoutAdapter.setEdit(true);
layoutAdapter.calculateBounds(backupBounds, new Rectangle((int) (bounds.x * scale), (int) (bounds.y * scale), (int) (bounds.width * scale), (int) (bounds.height * scale)), creator, row, difference); layoutAdapter.calculateBounds(backupBounds, bounds, creator, row, difference);
} }
} }
public void limitWidth(WLayout wabs, int w, Rectangle bounds, Rectangle rec) { public void limitWidth(WLayout wabs, int w, Rectangle bounds, Rectangle rec) {
int difference = 0; int difference = 0;
double scale = parent.getScale();
int minWidth = (int) (MINWIDTH * ((WFitLayout) wabs).getResolutionScaling()); int minWidth = (int) (MINWIDTH * ((WFitLayout) wabs).getResolutionScaling());
PaddingMargin margin = wabs.getMargin(); PaddingMargin margin = wabs.getMargin();
if (bounds.width != w) { if (bounds.width != w) {
if ((int) (bounds.width * scale) == rec.width - margin.getLeft() - margin.getRight()) { if (bounds.width == rec.width - margin.getLeft() - margin.getRight()) {
FineJOptionPane.showMessageDialog(null, com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Form_Beyond_Bounds")); FineJOptionPane.showMessageDialog(null, com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Form_Beyond_Bounds"));
width.setValue(bounds.width); width.setValue(bounds.width);
return; return;
} else if (w * scale < minWidth) { } else if (w < minWidth) {
FineJOptionPane.showMessageDialog(null, com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Form_Min_Width") + Integer.toString(minWidth)); FineJOptionPane.showMessageDialog(null, com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Form_Min_Width") + Integer.toString(minWidth));
width.setValue(bounds.width); width.setValue(bounds.width);
return; return;
@ -139,16 +132,15 @@ public class WidgetBoundPane extends BasicPane {
} }
public void limitHeight(WLayout wabs, int h, Rectangle bounds, Rectangle rec) { public void limitHeight(WLayout wabs, int h, Rectangle bounds, Rectangle rec) {
double scale = parent.getScale();
int difference = 0; int difference = 0;
PaddingMargin margin = wabs.getMargin(); PaddingMargin margin = wabs.getMargin();
int minHeight = (int) (MINHEIGHT * ((WFitLayout) wabs).getResolutionScaling()); int minHeight = (int) (MINHEIGHT * ((WFitLayout) wabs).getResolutionScaling());
if (bounds.height != h) { if (bounds.height != h) {
if ((int) (bounds.height * scale) == rec.height - margin.getTop() - margin.getBottom()) { if (bounds.height == rec.height - margin.getTop() - margin.getBottom()) {
FineJOptionPane.showMessageDialog(null, com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Form_Beyond_Bounds")); FineJOptionPane.showMessageDialog(null, com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Form_Beyond_Bounds"));
height.setValue(bounds.height); height.setValue(bounds.height);
return; return;
} else if (h * scale < minHeight) { } else if (h < minHeight) {
FineJOptionPane.showMessageDialog(null, com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Form_Min_Height") + Integer.toString(minHeight)); FineJOptionPane.showMessageDialog(null, com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Form_Min_Height") + Integer.toString(minHeight));
height.setValue(bounds.height); height.setValue(bounds.height);
return; return;

24
designer-form/src/main/java/com/fr/design/widget/ui/designer/component/WidgetCardTagBoundPane.java

@ -10,9 +10,11 @@ import com.fr.design.mainframe.FormDesigner;
import com.fr.design.mainframe.WidgetPropertyPane; import com.fr.design.mainframe.WidgetPropertyPane;
import com.fr.design.widget.WidgetBoundsPaneFactory; import com.fr.design.widget.WidgetBoundsPaneFactory;
import com.fr.form.ui.container.WTabDisplayPosition; import com.fr.form.ui.container.WTabDisplayPosition;
import com.fr.form.ui.container.cardlayout.WCardMainBorderLayout;
import com.fr.form.ui.container.cardlayout.WCardTagLayout; import com.fr.form.ui.container.cardlayout.WCardTagLayout;
import com.fr.general.ComparatorUtils; import com.fr.general.ComparatorUtils;
import javax.swing.JOptionPane;
import java.awt.Rectangle; import java.awt.Rectangle;
/** /**
@ -37,7 +39,6 @@ public class WidgetCardTagBoundPane extends WidgetBoundPane {
if (parent == null) { if (parent == null) {
return; return;
} }
double scale = parent.getScale();
FormDesigner formDesigner = WidgetPropertyPane.getInstance().getEditingFormDesigner(); FormDesigner formDesigner = WidgetPropertyPane.getInstance().getEditingFormDesigner();
Rectangle parentBounds = new Rectangle(parent.getBounds()); Rectangle parentBounds = new Rectangle(parent.getBounds());
@ -47,17 +48,17 @@ public class WidgetCardTagBoundPane extends WidgetBoundPane {
XLayoutContainer tabLayout = creator.getTopLayout(); XLayoutContainer tabLayout = creator.getTopLayout();
Rectangle rectangle = tabLayout.getBounds(); Rectangle rectangle = tabLayout.getBounds();
if(ComparatorUtils.equals(displayPosition, WTabDisplayPosition.TOP_POSITION) || ComparatorUtils.equals(displayPosition, WTabDisplayPosition.BOTTOM_POSITION)){ if(ComparatorUtils.equals(displayPosition, WTabDisplayPosition.TOP_POSITION) || ComparatorUtils.equals(displayPosition, WTabDisplayPosition.BOTTOM_POSITION)){
if(rectangle.height < size* scale){ if(rectangle.height < size){
FineJOptionPane.showMessageDialog(null, com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Form_Beyond_Tablayout_Bounds")); FineJOptionPane.showMessageDialog(null, com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Form_Beyond_Tablayout_Bounds"));
return; return;
} }
parentBounds.height = (int) (size * scale); parentBounds.height = size;
}else{ }else{
if(rectangle.width < size*scale){ if(rectangle.width < size){
FineJOptionPane.showMessageDialog(null, com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Form_Beyond_Tablayout_Bounds")); FineJOptionPane.showMessageDialog(null, com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Form_Beyond_Tablayout_Bounds"));
return; return;
} }
parentBounds.width = (int) (size * scale); parentBounds.width = size;
} }
parent.setBounds(parentBounds); parent.setBounds(parentBounds);
@ -75,8 +76,15 @@ public class WidgetCardTagBoundPane extends WidgetBoundPane {
@Override @Override
public void populate() { public void populate() {
WCardMainBorderLayout wCardMainBorderLayout = (WCardMainBorderLayout)creator.getTopLayout().toData(); WCardTagLayout tagLayout = (WCardTagLayout)creator.toData();
cardTagWidth.setValue(wCardMainBorderLayout.getTitleSize()); Rectangle bounds = new Rectangle(creator.getBounds());
WTabDisplayPosition displayPosition = tagLayout.getDisplayPosition();
if( ComparatorUtils.equals(displayPosition, WTabDisplayPosition.TOP_POSITION) || ComparatorUtils.equals(displayPosition, WTabDisplayPosition.BOTTOM_POSITION)){
cardTagWidth.setValue(bounds.height);
}else{
cardTagWidth.setValue(bounds.width);
}
} }
} }

28
designer-realize/src/main/java/com/fr/design/mainframe/ReportComponentComposite.java

@ -7,7 +7,6 @@ import com.fr.design.event.RemoveListener;
import com.fr.design.event.TargetModifiedListener; import com.fr.design.event.TargetModifiedListener;
import com.fr.design.file.HistoryTemplateListPane; import com.fr.design.file.HistoryTemplateListPane;
import com.fr.design.gui.icontainer.UIModeControlContainer; import com.fr.design.gui.icontainer.UIModeControlContainer;
import com.fr.design.gui.ispinner.UIBasicSpinner;
import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.layout.FRGUIPaneFactory;
import com.fr.grid.Grid; import com.fr.grid.Grid;
import com.fr.log.FineLoggerFactory; import com.fr.log.FineLoggerFactory;
@ -49,7 +48,7 @@ public class ReportComponentComposite extends JComponent implements RemoveListen
private JPanel hbarContainer; private JPanel hbarContainer;
private JSliderPane jSliderContainer; private JFormSliderPane jSliderContainer;
/** /**
* Constructor with workbook.. * Constructor with workbook..
@ -65,8 +64,7 @@ public class ReportComponentComposite extends JComponent implements RemoveListen
CellElementRegion = FRGUIPaneFactory.createBorderLayout_S_Pane(); CellElementRegion = FRGUIPaneFactory.createBorderLayout_S_Pane();
this.add(CellElementRegion, BorderLayout.NORTH); this.add(CellElementRegion, BorderLayout.NORTH);
this.add(createSouthControlPane(), BorderLayout.SOUTH); this.add(createSouthControlPane(), BorderLayout.SOUTH);
jSliderContainer.getShowVal().addChangeListener(showValSpinnerChangeListener); jSliderContainer.addValueChangeListener(showValSpinnerChangeListener);
jSliderContainer.getSelfAdaptButton().addItemListener(selfAdaptButtonItemListener);
} }
MouseWheelListener showValSpinnerMouseWheelListener = new MouseWheelListener() { MouseWheelListener showValSpinnerMouseWheelListener = new MouseWheelListener() {
@ -74,8 +72,8 @@ public class ReportComponentComposite extends JComponent implements RemoveListen
public void mouseWheelMoved(MouseWheelEvent e) { public void mouseWheelMoved(MouseWheelEvent e) {
if (InputEventBaseOnOS.isControlDown(e)) { if (InputEventBaseOnOS.isControlDown(e)) {
int dir = e.getWheelRotation(); int dir = e.getWheelRotation();
int old_resolution = (int) jSliderContainer.getShowVal().getValue(); int old_resolution = jSliderContainer.getShowValue();
jSliderContainer.getShowVal().setValue(old_resolution - (dir * DIR)); jSliderContainer.setShowValue(old_resolution - (dir * DIR));
} }
} }
}; };
@ -83,7 +81,7 @@ public class ReportComponentComposite extends JComponent implements RemoveListen
ChangeListener showValSpinnerChangeListener = new ChangeListener() { ChangeListener showValSpinnerChangeListener = new ChangeListener() {
@Override @Override
public void stateChanged(ChangeEvent e) { public void stateChanged(ChangeEvent e) {
double value = (int) ((UIBasicSpinner) e.getSource()).getValue(); double value = jSliderContainer.getShowValue();
value = value > MAX ? MAX : value; value = value > MAX ? MAX : value;
value = value < MIN ? MIN : value; value = value < MIN ? MIN : value;
int resolution = (int) (ScreenResolution.getScreenResolution() * value / HUND); int resolution = (int) (ScreenResolution.getScreenResolution() * value / HUND);
@ -91,15 +89,6 @@ public class ReportComponentComposite extends JComponent implements RemoveListen
} }
}; };
ItemListener selfAdaptButtonItemListener = new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
if (jSliderContainer.getSelfAdaptButton().isSelected()) {
int resolution = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate().selfAdaptUpdate();
jSliderContainer.getShowVal().setValue(resolution * HUND / ScreenResolution.getScreenResolution());
}
}
};
protected void doBeforeChange(int oldIndex) { protected void doBeforeChange(int oldIndex) {
if (oldIndex >= 0) { if (oldIndex >= 0) {
@ -130,8 +119,7 @@ public class ReportComponentComposite extends JComponent implements RemoveListen
templateStateList.add(null); templateStateList.add(null);
} }
centerCardPane.editingComponet.setSelection(centerCardPane.editingComponet.getDefaultSelectElement()); centerCardPane.editingComponet.setSelection(centerCardPane.editingComponet.getDefaultSelectElement());
jSliderContainer=JSliderPane.getInstance(); jSliderContainer = JFormSliderPane.getInstance();
jSliderContainer.reset();
} }
if (centerCardPane.editingComponet.elementCasePane == null) { if (centerCardPane.editingComponet.elementCasePane == null) {
@ -173,7 +161,7 @@ public class ReportComponentComposite extends JComponent implements RemoveListen
return sheetNameTab.getSelectedIndex(); return sheetNameTab.getSelectedIndex();
} }
public JSliderPane getjSliderContainer() { public JFormSliderPane getjSliderContainer() {
return this.jSliderContainer; return this.jSliderContainer;
} }
@ -217,7 +205,7 @@ public class ReportComponentComposite extends JComponent implements RemoveListen
hbarContainer = FRGUIPaneFactory.createBorderLayout_S_Pane(); hbarContainer = FRGUIPaneFactory.createBorderLayout_S_Pane();
hbarContainer.add(centerCardPane.editingComponet.getHorizontalScrollBar()); hbarContainer.add(centerCardPane.editingComponet.getHorizontalScrollBar());
JPanel southPane = new JPanel(new BorderLayout()); JPanel southPane = new JPanel(new BorderLayout());
jSliderContainer = JSliderPane.getInstance(); jSliderContainer = JFormSliderPane.getInstance();
southPane.add(hbarContainer, BorderLayout.NORTH); southPane.add(hbarContainer, BorderLayout.NORTH);
southPane.add(sheetNameTab, BorderLayout.CENTER); southPane.add(sheetNameTab, BorderLayout.CENTER);

4
designer-realize/src/main/java/com/fr/design/mainframe/WorkSheetDesigner.java

@ -182,8 +182,8 @@ public class WorkSheetDesigner extends ReportComponent<WorkSheet, ElementCasePan
@Override @Override
public void updateJSliderValue() { public void updateJSliderValue() {
ReportComponentComposite reportComposite = (ReportComponentComposite) HistoryTemplateListPane.getInstance().getCurrentEditingTemplate().getCurrentReportComponentPane(); ReportComponentComposite reportComposite = (ReportComponentComposite) HistoryTemplateListPane.getInstance().getCurrentEditingTemplate().getCurrentReportComponentPane();
JSliderPane jSliderContainer = reportComposite.getjSliderContainer(); JFormSliderPane jSliderContainer = reportComposite.getjSliderContainer();
jSliderContainer.getShowVal().setValue((int) Math.ceil((double) this.elementCasePane.getResolution() * HUND / ScreenResolution.getScreenResolution())); jSliderContainer.setShowValue((int) Math.ceil((double) this.elementCasePane.getResolution() * HUND / ScreenResolution.getScreenResolution()));
} }
@Override @Override

25
designer-realize/src/main/java/com/fr/design/mainframe/form/FormReportComponentComposite.java

@ -11,7 +11,7 @@ import com.fr.design.layout.FRGUIPaneFactory;
import com.fr.design.mainframe.BaseJForm; import com.fr.design.mainframe.BaseJForm;
import com.fr.design.mainframe.DesignerContext; import com.fr.design.mainframe.DesignerContext;
import com.fr.design.mainframe.ElementCasePane; import com.fr.design.mainframe.ElementCasePane;
import com.fr.design.mainframe.JSliderPane; import com.fr.design.mainframe.JFormSliderPane;
import com.fr.design.mainframe.toolbar.ToolBarMenuDockPlus; import com.fr.design.mainframe.toolbar.ToolBarMenuDockPlus;
import com.fr.form.FormElementCaseContainerProvider; import com.fr.form.FormElementCaseContainerProvider;
import com.fr.form.FormElementCaseProvider; import com.fr.form.FormElementCaseProvider;
@ -42,7 +42,7 @@ public class FormReportComponentComposite extends JComponent implements TargetMo
private FormTabPane sheetNameTab; private FormTabPane sheetNameTab;
private JPanel hbarContainer; private JPanel hbarContainer;
private JSliderPane jSliderContainer; private JFormSliderPane jSliderContainer;
public FormReportComponentComposite(BaseJForm jform, FormElementCaseDesigner elementCaseDesign, FormElementCaseContainerProvider ecContainer) { public FormReportComponentComposite(BaseJForm jform, FormElementCaseDesigner elementCaseDesign, FormElementCaseContainerProvider ecContainer) {
this.jForm = jform; this.jForm = jform;
@ -51,8 +51,7 @@ public class FormReportComponentComposite extends JComponent implements TargetMo
this.add(elementCaseDesigner, BorderLayout.CENTER); this.add(elementCaseDesigner, BorderLayout.CENTER);
sheetNameTab = new FormTabPane(ecContainer, jform); sheetNameTab = new FormTabPane(ecContainer, jform);
this.add(createSouthControlPane(), BorderLayout.SOUTH); this.add(createSouthControlPane(), BorderLayout.SOUTH);
jSliderContainer.getShowVal().addChangeListener(showValSpinnerChangeListener); jSliderContainer.addValueChangeListener(showValSpinnerChangeListener);
jSliderContainer.getSelfAdaptButton().addItemListener(selfAdaptButtonItemListener);
this.elementCaseDesigner.elementCasePane.getGrid().addMouseWheelListener(showValSpinnerMouseWheelListener); this.elementCaseDesigner.elementCasePane.getGrid().addMouseWheelListener(showValSpinnerMouseWheelListener);
elementCaseDesigner.addTargetModifiedListener(this); elementCaseDesigner.addTargetModifiedListener(this);
} }
@ -62,8 +61,8 @@ public class FormReportComponentComposite extends JComponent implements TargetMo
public void mouseWheelMoved(MouseWheelEvent e) { public void mouseWheelMoved(MouseWheelEvent e) {
if (InputEventBaseOnOS.isControlDown(e)) { if (InputEventBaseOnOS.isControlDown(e)) {
int dir = e.getWheelRotation(); int dir = e.getWheelRotation();
int old_resolution = (int) jSliderContainer.getShowVal().getValue(); int old_resolution = jSliderContainer.getShowValue();
jSliderContainer.getShowVal().setValue(old_resolution - (dir * DIR)); jSliderContainer.setShowValue(old_resolution - (dir * DIR));
} }
} }
}; };
@ -72,7 +71,7 @@ public class FormReportComponentComposite extends JComponent implements TargetMo
ChangeListener showValSpinnerChangeListener = new ChangeListener() { ChangeListener showValSpinnerChangeListener = new ChangeListener() {
@Override @Override
public void stateChanged(ChangeEvent e) { public void stateChanged(ChangeEvent e) {
double value = (int) ((UIBasicSpinner) e.getSource()).getValue(); double value = jSliderContainer.getShowValue();
value = value > MAX ? MAX : value; value = value > MAX ? MAX : value;
value = value < MIN ? MIN : value; value = value < MIN ? MIN : value;
int resolution = (int) (ScreenResolution.getScreenResolution() * value / HUND); int resolution = (int) (ScreenResolution.getScreenResolution() * value / HUND);
@ -81,15 +80,7 @@ public class FormReportComponentComposite extends JComponent implements TargetMo
} }
}; };
ItemListener selfAdaptButtonItemListener = new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
if (jSliderContainer.getSelfAdaptButton().isSelected()) {
int resolution = selfAdaptUpdate();
jSliderContainer.getShowVal().setValue(resolution * HUND / ScreenResolution.getScreenResolution());
}
}
};
private java.util.List<TargetModifiedListener> targetModifiedList = new java.util.ArrayList<TargetModifiedListener>(); private java.util.List<TargetModifiedListener> targetModifiedList = new java.util.ArrayList<TargetModifiedListener>();
@ -169,7 +160,7 @@ public class FormReportComponentComposite extends JComponent implements TargetMo
JPanel southPane = new JPanel(new BorderLayout()); JPanel southPane = new JPanel(new BorderLayout());
hbarContainer = FRGUIPaneFactory.createBorderLayout_S_Pane(); hbarContainer = FRGUIPaneFactory.createBorderLayout_S_Pane();
hbarContainer.add(elementCaseDesigner.getHorizontalScrollBar()); hbarContainer.add(elementCaseDesigner.getHorizontalScrollBar());
jSliderContainer = JSliderPane.getInstance(); jSliderContainer = JFormSliderPane.getInstance();
southPane.add(hbarContainer, BorderLayout.NORTH); southPane.add(hbarContainer, BorderLayout.NORTH);
southPane.add(sheetNameTab, BorderLayout.CENTER); southPane.add(sheetNameTab, BorderLayout.CENTER);

1
designer-realize/src/main/java/com/fr/grid/GridColumn.java

@ -10,7 +10,6 @@ import com.fr.base.ScreenResolution;
import com.fr.design.ExtraDesignClassManager; import com.fr.design.ExtraDesignClassManager;
import com.fr.design.fun.GridUIProcessor; import com.fr.design.fun.GridUIProcessor;
import com.fr.design.mainframe.ElementCasePane; import com.fr.design.mainframe.ElementCasePane;
import com.fr.design.mainframe.JSliderPane;
import com.fr.stable.StableUtils; import com.fr.stable.StableUtils;
import javax.swing.plaf.ComponentUI; import javax.swing.plaf.ComponentUI;

3
designer-realize/src/main/java/com/fr/grid/GridMouseAdapter.java

@ -9,7 +9,6 @@ import com.fr.design.constants.UIConstants;
import com.fr.design.mainframe.DesignerContext; import com.fr.design.mainframe.DesignerContext;
import com.fr.design.mainframe.EastRegionContainerPane; import com.fr.design.mainframe.EastRegionContainerPane;
import com.fr.design.mainframe.ElementCasePane; import com.fr.design.mainframe.ElementCasePane;
import com.fr.design.mainframe.JSliderPane;
import com.fr.design.os.impl.PopupDialogSaveAction; import com.fr.design.os.impl.PopupDialogSaveAction;
import com.fr.design.utils.gui.GUICoreUtils; import com.fr.design.utils.gui.GUICoreUtils;
import com.fr.grid.selection.CellSelection; import com.fr.grid.selection.CellSelection;
@ -74,7 +73,7 @@ public class GridMouseAdapter implements MouseListener, MouseWheelListener, Mous
private int ECBlockGap = 40; private int ECBlockGap = 40;
private int resolution = (int) (ScreenResolution.getScreenResolution() * JSliderPane.getInstance().resolutionTimes); private int resolution = ScreenResolution.getScreenResolution();
protected GridMouseAdapter(Grid grid) { protected GridMouseAdapter(Grid grid) {
this.grid = grid; this.grid = grid;

6
designer-realize/src/main/java/com/fr/grid/GridUtils.java

@ -6,7 +6,6 @@ import com.fr.design.cell.clipboard.CellElementsClip;
import com.fr.design.cell.clipboard.ElementsTransferable; import com.fr.design.cell.clipboard.ElementsTransferable;
import com.fr.design.cell.clipboard.FloatElementsClip; import com.fr.design.cell.clipboard.FloatElementsClip;
import com.fr.design.mainframe.ElementCasePane; import com.fr.design.mainframe.ElementCasePane;
import com.fr.design.mainframe.JSliderPane;
import com.fr.design.utils.gui.GUICoreUtils; import com.fr.design.utils.gui.GUICoreUtils;
import com.fr.general.ComparatorUtils; import com.fr.general.ComparatorUtils;
import com.fr.grid.selection.CellSelection; import com.fr.grid.selection.CellSelection;
@ -125,8 +124,7 @@ public class GridUtils {
*/ */
public static double[] caculateFloatElementLocations(FloatElement floatElement, DynamicUnitList columnWidthList, DynamicUnitList rowHeightList, public static double[] caculateFloatElementLocations(FloatElement floatElement, DynamicUnitList columnWidthList, DynamicUnitList rowHeightList,
int verticalValue, int horizentalValue) { int verticalValue, int horizentalValue) {
int resolution = (int) (ScreenResolution.getScreenResolution() * JSliderPane.getInstance().resolutionTimes); int resolution = ScreenResolution.getScreenResolution();
double floatX = columnWidthList.getRangeValue(horizentalValue, 0).toPixD(resolution) + floatElement.getLeftDistance().toPixD(resolution); double floatX = columnWidthList.getRangeValue(horizentalValue, 0).toPixD(resolution) + floatElement.getLeftDistance().toPixD(resolution);
double floatY = rowHeightList.getRangeValue(verticalValue, 0).toPixD(resolution) + floatElement.getTopDistance().toPixD(resolution); double floatY = rowHeightList.getRangeValue(verticalValue, 0).toPixD(resolution) + floatElement.getTopDistance().toPixD(resolution);
@ -179,7 +177,7 @@ public class GridUtils {
private static int cc_selected_column_or_row(double mouseEvtPosition, int beginValue, int value, DynamicUnitList sizeList) { private static int cc_selected_column_or_row(double mouseEvtPosition, int beginValue, int value, DynamicUnitList sizeList) {
double tmpIntIndex = 0; double tmpIntIndex = 0;
int selectedCellIndex = 0; int selectedCellIndex = 0;
int resolution = (int) (ScreenResolution.getScreenResolution() * JSliderPane.getInstance().resolutionTimes); int resolution = ScreenResolution.getScreenResolution();
if (mouseEvtPosition < 0) { if (mouseEvtPosition < 0) {
selectedCellIndex = value; selectedCellIndex = value;
for (; true; selectedCellIndex--) { for (; true; selectedCellIndex--) {

9
designer-realize/src/main/java/com/fr/poly/PolyDesigner.java

@ -25,7 +25,7 @@ import com.fr.design.mainframe.EastRegionContainerPane;
import com.fr.design.mainframe.ElementCasePane; import com.fr.design.mainframe.ElementCasePane;
import com.fr.design.mainframe.ElementCasePaneAuthorityEditPane; import com.fr.design.mainframe.ElementCasePaneAuthorityEditPane;
import com.fr.design.mainframe.FormScrollBar; import com.fr.design.mainframe.FormScrollBar;
import com.fr.design.mainframe.JSliderPane; import com.fr.design.mainframe.JFormSliderPane;
import com.fr.design.mainframe.JTemplate; import com.fr.design.mainframe.JTemplate;
import com.fr.design.mainframe.NoSupportAuthorityEdit; import com.fr.design.mainframe.NoSupportAuthorityEdit;
import com.fr.design.mainframe.ReportComponent; import com.fr.design.mainframe.ReportComponent;
@ -124,8 +124,7 @@ public class PolyDesigner extends ReportComponent<PolyWorkSheet, PolyElementCase
private PolyComponentsBar polyComponentsBar = new PolyComponentsBar(); private PolyComponentsBar polyComponentsBar = new PolyComponentsBar();
private JComponent[] toolBarComponent = null; private JComponent[] toolBarComponent = null;
private JPanel ployareaPane; private JPanel ployareaPane;
private JSliderPane jSliderContainer; private int resolution = ScreenResolution.getScreenResolution() ;
private int resolution = (int) (ScreenResolution.getScreenResolution() * JSliderPane.getInstance().resolutionTimes);
private float time; private float time;
public PolyDesigner(PolyWorkSheet report) { public PolyDesigner(PolyWorkSheet report) {
@ -863,8 +862,8 @@ public class PolyDesigner extends ReportComponent<PolyWorkSheet, PolyElementCase
@Override @Override
public void updateJSliderValue() { public void updateJSliderValue() {
ReportComponentComposite reportComposite = (ReportComponentComposite) HistoryTemplateListPane.getInstance().getCurrentEditingTemplate().getCurrentReportComponentPane(); ReportComponentComposite reportComposite = (ReportComponentComposite) HistoryTemplateListPane.getInstance().getCurrentEditingTemplate().getCurrentReportComponentPane();
JSliderPane jSliderContainer = reportComposite.getjSliderContainer(); JFormSliderPane jSliderContainer = reportComposite.getjSliderContainer();
jSliderContainer.getShowVal().setValue((int) Math.ceil((double) this.resolution * HUND / ScreenResolution.getScreenResolution())); jSliderContainer.setShowValue((int) Math.ceil((double) this.resolution * HUND / ScreenResolution.getScreenResolution()));
} }

Loading…
Cancel
Save