diff --git a/designer-form/src/main/java/com/fr/design/designer/creator/XWAbsoluteLayout.java b/designer-form/src/main/java/com/fr/design/designer/creator/XWAbsoluteLayout.java index f249a651e..67367f10d 100644 --- a/designer-form/src/main/java/com/fr/design/designer/creator/XWAbsoluteLayout.java +++ b/designer-form/src/main/java/com/fr/design/designer/creator/XWAbsoluteLayout.java @@ -4,21 +4,16 @@ package com.fr.design.designer.creator; import com.fr.base.GraphHelper; -import com.fr.design.designer.beans.AdapterBus; -import com.fr.design.designer.beans.ComponentAdapter; import com.fr.design.designer.beans.LayoutAdapter; import com.fr.design.designer.beans.adapters.layout.FRAbsoluteLayoutAdapter; import com.fr.design.designer.beans.location.Direction; -import com.fr.design.designer.beans.models.SelectionModel; import com.fr.design.designer.creator.cardlayout.XWTabFitLayout; import com.fr.design.designer.properties.mobile.MobileBooKMarkUsePropertyUI; -import com.fr.design.fit.DesignerUIModeConfig; import com.fr.design.form.layout.FRAbsoluteLayout; import com.fr.design.form.util.FormDesignerUtils; import com.fr.design.fun.WidgetPropertyUIProvider; import com.fr.design.mainframe.CoverReportPane; import com.fr.design.mainframe.EditingMouseListener; -import com.fr.design.mainframe.FormArea; import com.fr.design.mainframe.FormDesigner; import com.fr.design.mainframe.WidgetPropertyPane; import com.fr.form.ui.Connector; @@ -26,6 +21,7 @@ import com.fr.form.ui.Widget; import com.fr.form.ui.container.WAbsoluteLayout; import com.fr.form.ui.container.WAbsoluteLayout.BoundsWidget; import com.fr.form.ui.container.WLayout; +import com.fr.general.FRScreen; import com.fr.stable.AssistUtils; import com.fr.stable.Constants; @@ -34,7 +30,6 @@ import java.awt.Cursor; import java.awt.Dimension; import java.awt.Graphics; import java.awt.Rectangle; -import java.awt.Toolkit; import java.awt.event.ContainerEvent; import java.awt.event.MouseEvent; import java.beans.IntrospectionException; @@ -52,9 +47,6 @@ public class XWAbsoluteLayout extends XLayoutContainer { private static final Color OUTER_BORDER_COLOR = new Color(65, 155, 249, 30); private static final Color INNER_BORDER_COLOR = new Color(65, 155, 249); - //由于屏幕分辨率不同,界面上的容器大小可能不是默认的100%,此时拖入组件时,保存的大小按照100%时的计算 - protected double containerPercent = 1.0; - private HashMap xConnectorMap; public XWAbsoluteLayout() { @@ -73,8 +65,6 @@ public class XWAbsoluteLayout extends XLayoutContainer { connector = widget.getConnectorIndex(i); xConnectorMap.put(connector, new XConnector(connector, this)); } - - initPercent(widget); } /** @@ -87,36 +77,6 @@ public class XWAbsoluteLayout extends XLayoutContainer { return new Dimension(500, 300); } - //根据屏幕大小来确定显示的百分比, 1440*900默认100%, 1366*768缩放90% - private void initPercent(WAbsoluteLayout widget) { - Toolkit toolkit = Toolkit.getDefaultToolkit(); - Dimension scrnsize = toolkit.getScreenSize(); - double screenValue = DesignerUIModeConfig.getInstance().getDesignScreenByDimension(scrnsize).getValue(); - if (!AssistUtils.equals(screenValue, FormArea.DEFAULT_SLIDER)) { - this.setContainerPercent(screenValue / FormArea.DEFAULT_SLIDER); - } - } - - /** - * 返回容器大小的百分比 - * - * @return the containerPercent - */ - public double getContainerPercent() { - return containerPercent; - } - - /** - * 设置容器大小的百分比 - * - * @param containerPercent the containerPercent to set - */ - public void setContainerPercent(double containerPercent) { - this.containerPercent = containerPercent; - minWidth = (int) (XWAbsoluteLayout.MIN_WIDTH * containerPercent); - minHeight = (int) (XWAbsoluteLayout.MIN_HEIGHT * containerPercent); - } - /** * 返回界面处根据百分比调整后的最小宽度 * @@ -142,30 +102,14 @@ public class XWAbsoluteLayout extends XLayoutContainer { */ public int getAcualInterval() { // adapter那边交叉三等分、删除都要判断是否对齐,所以间隔转为偶数 - int interval = (int) (toData().getCompInterval() * containerPercent); + int interval = (int) (toData().getCompInterval() ); int val = interval / 2; return val * 2; } - - /** - * 界面容器大小不是默认的时,处理控件的BoundsWidget,且避免出现空隙 - */ - private Rectangle dealWidgetBound(Rectangle rec) { - if (AssistUtils.equals(1.0, containerPercent)) { - return rec; - } - rec.x = (int) (rec.x / containerPercent); - rec.y = (int) (rec.y / containerPercent); - rec.width = (int) (rec.width / containerPercent); - rec.height = (int) (rec.height / containerPercent); - return rec; - } - /** * 新增删除拉伸后单个组件的BoundsWidget */ public void updateBoundsWidget(XCreator xCreator) { - WAbsoluteLayout layout = this.toData(); if (xCreator.hasTitleStyle()) { xCreator = (XLayoutContainer) xCreator.getParent(); } @@ -223,32 +167,32 @@ public class XWAbsoluteLayout extends XLayoutContainer { } } - /** - * 更新子组件的Bound - * 这边主要用于绝对布局子组件在适应区域选项时 - * 涉及到的不同分辨率下缩放 - * - * @param minHeight 最小高度 - */ - @Override - public void updateChildBound(int minHeight) { - double prevContainerPercent = DesignerUIModeConfig.getInstance().getDesignScreenByDimension(toData().getDesigningResolution()).getValue() / FormArea.DEFAULT_SLIDER; - if (toData().getCompState() == 0 && !AssistUtils.equals(containerPercent, prevContainerPercent)) { - for (int i = 0; i < this.getComponentCount(); i++) { - XCreator creator = getXCreator(i); - Rectangle rec = new Rectangle(creator.getBounds()); - rec.x = (int)Math.round (rec.x / prevContainerPercent * containerPercent); - rec.y = (int)Math.round (rec.y / prevContainerPercent * containerPercent); - rec.height = (int)Math.round (rec.height / prevContainerPercent * containerPercent); - rec.width = (int)Math.round (rec.width / prevContainerPercent * containerPercent); - BoundsWidget wgt = (BoundsWidget) toData().getBoundsWidget(creator.toData()); - wgt.setBounds(rec); - creator.setBounds(rec); - creator.updateChildBound(minHeight); + /** + * 更新子组件的Bound + * 这边主要用于绝对布局子组件在适应区域选项时 + * 涉及到的不同分辨率下缩放 + * todo 兼容方法(老的模板中绝对布局带有分辨率参数的兼容处理) + * + * @param minHeight 最小高度 + */ + @Override + public void updateChildBound(int minHeight) { + double prevContainerPercent = FRScreen.getFRScreenByDimension(toData().getDesigningResolution()).getValue() / 100; + if (!AssistUtils.equals(1.0D, prevContainerPercent)) { + for (int i = 0; i < this.getComponentCount(); i++) { + XCreator creator = getXCreator(i); + Rectangle rec = new Rectangle(creator.getBounds()); + rec.x = (int) Math.round(rec.x / prevContainerPercent); + rec.y = (int) Math.round(rec.y / prevContainerPercent); + rec.height = (int) Math.round(rec.height / prevContainerPercent); + rec.width = (int) Math.round(rec.width / prevContainerPercent); + BoundsWidget wgt = (BoundsWidget) toData().getBoundsWidget(creator.toData()); + wgt.setBounds(rec); + creator.setBounds(rec); + creator.updateChildBound(minHeight); + } } } - toData().setDesigningResolution(Toolkit.getDefaultToolkit().getScreenSize()); - } /** * 增加对齐线 diff --git a/designer-form/src/main/java/com/fr/design/designer/creator/XWFitLayout.java b/designer-form/src/main/java/com/fr/design/designer/creator/XWFitLayout.java index da4d235f0..ea6170052 100644 --- a/designer-form/src/main/java/com/fr/design/designer/creator/XWFitLayout.java +++ b/designer-form/src/main/java/com/fr/design/designer/creator/XWFitLayout.java @@ -3,15 +3,12 @@ package com.fr.design.designer.creator; import com.fr.design.designer.beans.LayoutAdapter; import com.fr.design.designer.beans.adapters.layout.FRFitLayoutAdapter; import com.fr.design.designer.beans.adapters.layout.FRFixLayoutAdapter; -import com.fr.design.designer.beans.adapters.layout.FRNoFixLayoutAdapter; import com.fr.design.designer.beans.location.Direction; import com.fr.design.designer.creator.cardlayout.XWCardMainBorderLayout; import com.fr.design.designer.creator.cardlayout.XWTabFitLayout; import com.fr.design.designer.properties.mobile.BodyMobilePropertyUI; -import com.fr.design.fit.DesignerUIModeConfig; import com.fr.design.form.layout.FRFitLayout; import com.fr.design.fun.WidgetPropertyUIProvider; -import com.fr.design.mainframe.FormArea; import com.fr.design.mainframe.FormDesigner; import com.fr.design.mainframe.WidgetPropertyPane; import com.fr.design.utils.gui.LayoutUtils; @@ -24,12 +21,10 @@ import com.fr.form.ui.container.WLayout; import com.fr.general.ComparatorUtils; import com.fr.general.FRLogger; import com.fr.stable.ArrayUtils; -import com.fr.stable.AssistUtils; import javax.swing.JOptionPane; import java.awt.Component; import java.awt.Dimension; import java.awt.Rectangle; -import java.awt.Toolkit; import java.awt.event.ContainerEvent; import java.util.ArrayList; import java.util.Arrays; @@ -46,9 +41,6 @@ public class XWFitLayout extends XLayoutContainer { private static final long serialVersionUID = 8112908607102660176L; private static final int EACH_ROW_COUNT = 4; - - //由于屏幕分辨率不同,界面上的容器大小可能不是默认的100%,此时拖入组件时,保存的大小按照100%时的计算 - protected double containerPercent = 1.0; // 布局缩小的时候,考虑最小宽高,若挨着右侧或底侧边框的控件缩小后达到最小宽或高,此时容器大小微调下 private int needAddWidth = 0; private int needAddHeight = 0; @@ -64,20 +56,6 @@ public class XWFitLayout extends XLayoutContainer { public XWFitLayout(WFitLayout widget, Dimension initSize) { super(widget, initSize); - - initPercent(); - - widget.setResolutionScaling(containerPercent); - } - - //根据屏幕大小来确定显示的百分比, 1440*900默认100%, 1366*768缩放90% - private void initPercent(){ - Toolkit toolkit = Toolkit.getDefaultToolkit(); - Dimension scrnsize = toolkit.getScreenSize(); - double screenValue = DesignerUIModeConfig.getInstance().getDesignScreenByDimension(scrnsize).getValue(); - if (!AssistUtils.equals(FormArea.DEFAULT_SLIDER, screenValue)) { - this.setContainerPercent(screenValue / FormArea.DEFAULT_SLIDER); - } } @Override @@ -252,19 +230,16 @@ public class XWFitLayout extends XLayoutContainer { * @return int[] 横坐标数组 */ public int[] getHors(boolean isActualSize) { - double perc = isActualSize ? containerPercent : 1.0; List posX = new ArrayList(); // 保存实际大小时,组件大小已经去除内边距,此处也判断下 - PaddingMargin margin = isActualSize ? new PaddingMargin(0,0,0,0) : toData().getMargin(); + PaddingMargin margin = isActualSize ? new PaddingMargin(0, 0, 0, 0) : toData().getMargin(); posX.add(margin.getLeft()); int width = this.getWidth() - margin.getLeft() - margin.getRight(); - int containW = (int) (width / perc); - posX.add(containW + margin.getLeft()); - for (int i=0, len=this.getComponentCount(); i < len; i++) { + posX.add(width + margin.getLeft()); + for (int i = 0, len = this.getComponentCount(); i < len; i++) { int x = this.getComponent(i).getX(); - int finalX = (int) (x / perc); - if (!posX.contains(finalX)) { - posX.add(finalX); + if (!posX.contains(x)) { + posX.add(x); } } Collections.sort(posX); @@ -278,19 +253,16 @@ public class XWFitLayout extends XLayoutContainer { * */ public int[] getVeris(boolean isActualSize) { - double perc = isActualSize ? containerPercent : 1.0; List posY = new ArrayList(); // 保存实际大小时,组件大小已经去除内边距,此处也判断下 PaddingMargin margin = isActualSize ? new PaddingMargin(0,0,0,0) : toData().getMargin(); posY.add(margin.getTop()); int height = this.getHeight() - margin.getTop() - margin.getBottom(); - int containH = (int) (height / perc); - posY.add(containH + margin.getTop()); + posY.add(height + margin.getTop()); for (int i=0, len=this.getComponentCount(); i < len; i++) { int y = this.getComponent(i).getY(); - int finalY = (int) (y / perc); - if (!posY.contains(finalY)) { - posY.add(finalY); + if (!posY.contains(y)) { + posY.add(y); } } Collections.sort(posY); @@ -721,34 +693,6 @@ public class XWFitLayout extends XLayoutContainer { creator.setBackupParent(this); } - /** - * 界面容器大小不是默认的时,处理控件的BoundsWidget,且避免出现空隙 - */ - private Rectangle dealWidgetBound(Rectangle rec) { - if (AssistUtils.equals(1.0, containerPercent)) { - return rec; - } - rec.x = (int) (rec.x/containerPercent); - rec.y = (int) (rec.y/containerPercent); - rec.width = (int) (rec.width/containerPercent); - rec.height = (int) (rec.height/containerPercent); - return rec; - } - - /** - * 界面容器大小不是默认的时,恢复组件实际大小 - */ - private Rectangle dealWgtBound(Rectangle rec) { - if (AssistUtils.equals(1.0, containerPercent)) { - return rec; - } - rec.x = (int) (rec.x * containerPercent); - rec.y = (int) (rec.y * containerPercent); - rec.width = (int) (rec.width * containerPercent); - rec.height = (int) (rec.height * containerPercent); - return rec; - } - /** * 新增删除拉伸后更新每个组件的BoundsWidget */ @@ -774,7 +718,7 @@ public class XWFitLayout extends XLayoutContainer { XCreator creator = (XCreator) this.getComponent(index); BoundsWidget wgt = (BoundsWidget) layout.getBoundsWidget(creator.toData()); // 用当前的显示大小计算后调正具体位置 - Rectangle wgtBound = dealWidgetBound(creator.getBounds()); + Rectangle wgtBound = creator.getBounds(); Rectangle rec = recalculateWidgetBounds(wgtBound, hors, veris); wgt.setBounds(rec); creator.toData().updateChildBounds(rec); @@ -814,7 +758,7 @@ public class XWFitLayout extends XLayoutContainer { //更新的时候一定要带上backupBound if (creator.getBackupBound() == null && wgt.getBeforeScaleBounds() != null) { - creator.setBackupBound(dealWgtBound(wgt.getBeforeScaleBounds())); + creator.setBackupBound(wgt.getBeforeScaleBounds()); } ((XWAbsoluteLayout) creator).updateBoundsWidget(); creator.setBackupBound(creator.getBounds()); @@ -1170,24 +1114,6 @@ public class XWFitLayout extends XLayoutContainer { return this.getComponentAt(x+w-default_Length, y+h+default_Length+val); } - /** - * 返回容器大小的百分比 - * @return the containerPercent - */ - public double getContainerPercent() { - return containerPercent; - } - - /** - * 设置容器大小的百分比 - * @param containerPercent the containerPercent to set - */ - public void setContainerPercent(double containerPercent) { - this.containerPercent = containerPercent; - minWidth = (int) (XWFitLayout.MIN_WIDTH*containerPercent); - minHeight = (int) (XWFitLayout.MIN_HEIGHT*containerPercent); - } - /** * 该组件是否可以拖拽(表单中参数面板和自适应布局不可以拖拽) * @return 是则返回true @@ -1218,9 +1144,9 @@ public class XWFitLayout extends XLayoutContainer { */ public int getAcualInterval() { // adapter那边交叉三等分、删除都要判断是否对齐,所以间隔转为偶数 - int interval = (int) (toData().getCompInterval()*containerPercent); - int val = interval/2; - return val*2; + int interval = toData().getCompInterval(); + int val = interval / 2; + return val * 2; } /** diff --git a/designer-form/src/main/java/com/fr/design/designer/properties/FRFitLayoutConstraints.java b/designer-form/src/main/java/com/fr/design/designer/properties/FRFitLayoutConstraints.java index 7e2fd9451..fb0ab8718 100644 --- a/designer-form/src/main/java/com/fr/design/designer/properties/FRFitLayoutConstraints.java +++ b/designer-form/src/main/java/com/fr/design/designer/properties/FRFitLayoutConstraints.java @@ -92,8 +92,8 @@ public class FRFitLayoutConstraints implements ConstraintsGroupModel { Rectangle bounds = getBounds(); Rectangle rec = ComponentUtils.getRelativeBounds(parent); WFitLayout wFitLayout = parent.toData(); - int minHeight = (int)(MINHEIGHT * wFitLayout.getResolutionScaling()); - int minWidth = (int)(MINWIDTH * wFitLayout.getResolutionScaling()); + int minHeight = MINHEIGHT; + int minWidth = MINWIDTH; PaddingMargin margin= wFitLayout.getMargin(); switch (row) { case 0: diff --git a/designer-form/src/main/java/com/fr/design/mainframe/FormArea.java b/designer-form/src/main/java/com/fr/design/mainframe/FormArea.java index be001e881..635920c79 100644 --- a/designer-form/src/main/java/com/fr/design/mainframe/FormArea.java +++ b/designer-form/src/main/java/com/fr/design/mainframe/FormArea.java @@ -7,7 +7,6 @@ import com.fr.design.designer.creator.XCreator; import com.fr.design.designer.creator.XLayoutContainer; import com.fr.design.designer.creator.XWBorderLayout; import com.fr.design.designer.creator.XWFitLayout; -import com.fr.design.fit.DesignerUIModeConfig; import com.fr.design.gui.ibutton.UIButton; import com.fr.design.gui.ibutton.UIButtonUI; import com.fr.design.gui.ilable.UILabel; @@ -30,6 +29,7 @@ import com.fr.form.main.mobile.FormMobileAttr; import com.fr.form.ui.container.WBodyLayoutType; import com.fr.form.ui.container.WBorderLayout; import com.fr.form.ui.container.WFitLayout; +import com.fr.general.FRScreen; import com.fr.general.IOUtils; import com.fr.stable.AssistUtils; @@ -66,12 +66,10 @@ import java.awt.event.MouseWheelEvent; import static com.fr.design.gui.syntax.ui.rtextarea.RTADefaultInputMap.DEFAULT_MODIFIER; public class FormArea extends JComponent implements ScrollRulerComponent { - private static final double SLIDER_FLOAT = 400.0; - private static final double SLIDER_MIN = 10.0; private static final String SCALE_PLUS_COMMAND = "scale_plus"; private static final String SCALE_MINUS_COMMAND = "scale_minus"; public static final String FIX_LAYOUT_SWITCH_BUTTON = "fix_layout_switch_button"; - public static final double DEFAULT_SLIDER = 100.0; + public static final double DEFAULT_SLIDER = 100.0D; private static final int ROTATIONS = 50; public static final int SHOWVALMAX = 400; public static final int SHOWVALMIN = 10; @@ -90,21 +88,9 @@ public class FormArea extends JComponent implements ScrollRulerComponent { private UINumberField heightPane; private JFormSliderPane slidePane; private boolean isValid = true; - // 初始时滑块值为100,托动后的值设为START_VALUE; - private double START_VALUE = DEFAULT_SLIDER; - private double screenValue; private UIButton fixLayoutSwitchButton; private boolean isFixLayoutEditState; - - public FormScrollBar getHorScrollBar() { - return horScrollBar; - } - - public void setHorScrollBar(FormScrollBar horScrollBar) { - this.horScrollBar = horScrollBar; - } - public FormArea(FormDesigner designer) { this(designer, true); } @@ -243,7 +229,6 @@ public class FormArea extends JComponent implements ScrollRulerComponent { heightPane.setPreferredSize(new Dimension(60, 0)); slidePane = JFormSliderPane.getInstance(); - JPanel resizePane = TableLayoutHelper.createCommonTableLayoutPane( new JComponent[][]{{tipsPane, layoutSwitchPane, widthPane, new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Form_Indent_Pixel")), @@ -258,6 +243,7 @@ public class FormArea extends JComponent implements ScrollRulerComponent { slidePane.setVisible(true); initCalculateSize(); slidePane.addValueChangeListener(showValSpinnerChangeListener); + slidePane.setShowValue(FRScreen.getFRScreenByDimension(Toolkit.getDefaultToolkit().getScreenSize()).getValue().intValue()); } public void undoFixLayoutState(boolean isFixLayout) { @@ -309,41 +295,10 @@ public class FormArea extends JComponent implements ScrollRulerComponent { this.designer.repaint(); } - - /** - * 返回当前的屏幕分辨率对应的百分比值 - * - * @return 缩放的百分比值 - */ - public double getScreenValue() { - return screenValue; - } - - /** - * 设置屏幕分辨率对应的百分比值 - * - * @param screenValue 百分比值 - */ - public void setScreenValue(double screenValue) { - this.screenValue = screenValue; - } - private void initCalculateSize() { - Toolkit toolkit = Toolkit.getDefaultToolkit(); - Dimension scrnsize = toolkit.getScreenSize(); - this.screenValue = DesignerUIModeConfig.getInstance().getDesignScreenByDimension(scrnsize).getValue(); XLayoutContainer root = FormArea.this.designer.getRootComponent(); - // 7.1.1不放缩放滑块,但表单大小仍按屏幕分辨率调整 -// slidePane.populateBean(screenValue); if (root.acceptType(XWFitLayout.class)) { - XWFitLayout layout = (XWFitLayout) root; - if ( !AssistUtils.equals(screenValue, DEFAULT_SLIDER) ) { - reCalculateRoot(screenValue, true); - } else { - // 组件间隔啊 - // REPORT-2585 原有的逻辑导致嵌套的tab中的间隔加不上去,会在后续拖动的过程中出问题 - reCalculateDefaultRoot(screenValue, true); - } + reCalculateDefaultRoot(); } LayoutUtils.layoutContainer(root); updateCreatorsBackupBound(root); @@ -497,78 +452,26 @@ public class FormArea extends JComponent implements ScrollRulerComponent { * 修改大小后,再根据屏幕分辨率调整下 */ public void doReCalculateRoot(int width, int height, XWFitLayout layout) { -// double value = slidePane.updateBean(); - //重置滑块的值为默认值100 - START_VALUE = DEFAULT_SLIDER; - if ( AssistUtils.equals(screenValue, DEFAULT_SLIDER) ) { - layout.getParent().setSize(width, height + designer.getParaHeight()); - FormArea.this.validate(); - } else { - layout.setBackupGap(screenValue / DEFAULT_SLIDER); - reCalculateRoot(screenValue, false); - } - } - - /** - * 按照界面大小的百分比值调整root大小 - * - * @param needCalculateParaHeight 是否需要调整参数界面高度 - * @param value - */ - private void reCalculateRoot(double value, boolean needCalculateParaHeight) { - if ( AssistUtils.equals(value, START_VALUE) ) { - return; - } - double percent = (value - START_VALUE) / START_VALUE; - XLayoutContainer root = FormArea.this.designer.getRootComponent(); - if (root.acceptType(XWFitLayout.class)) { - XWFitLayout layout = (XWFitLayout) root; - layout.setContainerPercent(value / DEFAULT_SLIDER); - traverAndAdjust(layout, percent); - layout.adjustCreatorsWhileSlide(percent); - - // 拖动滑块,先将内部组件百分比大小计算,再计算容器大小 - - Dimension d = new Dimension(layout.getWidth(), layout.getHeight()); - // 自适应布局的父层是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(); - } - START_VALUE = value; - } + layout.getParent().setSize(width, height + designer.getParaHeight()); + FormArea.this.validate(); } /** * 按照界面大小的百分比值调整root大小 * - * @param needCalculateParaHeight 是否需要调整参数界面高度 - * @param value */ - private void reCalculateDefaultRoot(double value, boolean needCalculateParaHeight) { + private void reCalculateDefaultRoot() { XLayoutContainer root = FormArea.this.designer.getRootComponent(); if (root.acceptType(XWFitLayout.class)) { XWFitLayout layout = (XWFitLayout) root; - layout.setContainerPercent(1.0); traverAndAdjust(layout, 0.0); layout.adjustCreatorsWhileSlide(0.0); // 拖动滑块,先将内部组件百分比大小计算,再计算容器大小 - Dimension d = new Dimension(layout.getWidth(), layout.getHeight()); // 自适应布局的父层是border if (layout.getParent() != null) { int paraHeight = designer.getParaHeight(); - if (needCalculateParaHeight && paraHeight > 0) { + if (paraHeight > 0) { designer.setParaHeight(paraHeight); XWBorderLayout parent = (XWBorderLayout) layout.getParent(); parent.toData().setNorthSize(paraHeight); @@ -885,16 +788,11 @@ public class FormArea extends JComponent implements ScrollRulerComponent { heightPane.setValue(height); reCalculateHeight((int) height); } - if (designer.getRootComponent().acceptType(XWFitLayout.class) && AssistUtils.equals(screenValue, DEFAULT_SLIDER) ) { + if (designer.getRootComponent().acceptType(XWFitLayout.class) ) { XWFitLayout layout = (XWFitLayout) designer.getRootComponent(); // 撤销时先refreshRoot了,此处去掉内边距再增加间隔 layout.moveContainerMargin(); layout.addCompInterval(layout.getAcualInterval()); - } else if (designer.getRootComponent().acceptType(XWFitLayout.class)) { - START_VALUE = DEFAULT_SLIDER; - reCalculateRoot(screenValue, true); -// slidePane.populateBean(slide); - } this.slidePane.setShowValue((int) slide); } diff --git a/designer-form/src/main/java/com/fr/design/mainframe/FormDesigner.java b/designer-form/src/main/java/com/fr/design/mainframe/FormDesigner.java index 3eb40b6a2..845c270b7 100644 --- a/designer-form/src/main/java/com/fr/design/mainframe/FormDesigner.java +++ b/designer-form/src/main/java/com/fr/design/mainframe/FormDesigner.java @@ -151,7 +151,6 @@ public class FormDesigner extends TargetComponent
implements TreeSelection // 存储被选择组件和剪切板的model private transient SelectionModel selectionModel; - private int resolution = DesignerUIModeConfig.getInstance().getScreenResolution(); // 编辑状态的事件表 private CreatorEventListenerTable edit; protected List designerActions; @@ -1801,14 +1800,6 @@ public class FormDesigner extends TargetComponent implements TreeSelection } - public void setResolution(int resolution) { - this.resolution = resolution; - } - - public int getResolution() { - return this.resolution; - } - public double getScale() { return scale; } diff --git a/designer-form/src/main/java/com/fr/design/mainframe/FormDesignerUI.java b/designer-form/src/main/java/com/fr/design/mainframe/FormDesignerUI.java index 9284554dc..aab1b27b7 100644 --- a/designer-form/src/main/java/com/fr/design/mainframe/FormDesignerUI.java +++ b/designer-form/src/main/java/com/fr/design/mainframe/FormDesignerUI.java @@ -1,6 +1,7 @@ package com.fr.design.mainframe; import com.fr.base.GraphHelper; +import com.fr.base.ScreenResolution; import com.fr.base.Utils; import com.fr.base.iofile.attr.WatermarkAttr; import com.fr.base.vcs.DesignerMode; @@ -132,7 +133,7 @@ public class FormDesignerUI extends ComponentUI { return; } WatermarkAttr watermark = ReportUtils.getWatermarkAttrFromTemplateAndGlobal(designer.getTarget()); - WatermarkPainter painter = WatermarkPainter.createPainter(watermark, designer.getResolution()); + WatermarkPainter painter = WatermarkPainter.createPainter(watermark, ScreenResolution.getScreenResolution()); painter.paint(g, 0, 0, designer.getArea().getBounds()); } diff --git a/designer-form/src/main/java/com/fr/design/mainframe/FormSelectionUtils.java b/designer-form/src/main/java/com/fr/design/mainframe/FormSelectionUtils.java index 7d3b17f5b..5e5740f03 100644 --- a/designer-form/src/main/java/com/fr/design/mainframe/FormSelectionUtils.java +++ b/designer-form/src/main/java/com/fr/design/mainframe/FormSelectionUtils.java @@ -182,11 +182,10 @@ public class FormSelectionUtils { if (!childrenList.isEmpty()) { for (Object aChildrenList : childrenList) { XWTabFitLayout tabLayout = (XWTabFitLayout) aChildrenList; - double percent = tabLayout.getContainerPercent(); Component[] components = tabLayout.getComponents(); for (Component component : components) { Rectangle show = component.getBounds(); - component.setBounds(new Rectangle((int) (show.x * percent), (int) (show.y * percent), (int) (show.width * percent), (int) (show.height * percent))); + component.setBounds(new Rectangle(show.x, show.y, show.width, show.height)); } } } diff --git a/designer-form/src/main/java/com/fr/design/mainframe/share/select/ComponentTransformerImpl.java b/designer-form/src/main/java/com/fr/design/mainframe/share/select/ComponentTransformerImpl.java index af8612608..9a251a24d 100644 --- a/designer-form/src/main/java/com/fr/design/mainframe/share/select/ComponentTransformerImpl.java +++ b/designer-form/src/main/java/com/fr/design/mainframe/share/select/ComponentTransformerImpl.java @@ -30,7 +30,6 @@ import org.jetbrains.annotations.Nullable; import java.awt.Dimension; import java.awt.Rectangle; -import java.awt.Toolkit; import java.util.Comparator; import java.util.Map; import java.util.TreeMap; @@ -88,8 +87,6 @@ public class ComponentTransformerImpl implements ComponentTransformer { FRContext.getLogger().error(e1.getMessage(), e1); } } - wAbsoluteLayout.setDesigningResolution(Toolkit.getDefaultToolkit().getScreenSize()); - selectedCreator = new XWAbsoluteLayout(wAbsoluteLayout, new Dimension(selectedTriple.width, selectedTriple.height)); selectedWidget = selectedCreator.toData(); diff --git a/designer-form/src/main/java/com/fr/design/widget/ui/designer/component/WidgetBoundPane.java b/designer-form/src/main/java/com/fr/design/widget/ui/designer/component/WidgetBoundPane.java index f711eb157..85265fa6e 100644 --- a/designer-form/src/main/java/com/fr/design/widget/ui/designer/component/WidgetBoundPane.java +++ b/designer-form/src/main/java/com/fr/design/widget/ui/designer/component/WidgetBoundPane.java @@ -150,7 +150,7 @@ public class WidgetBoundPane extends BasicPane { public void limitWidth(WLayout wabs, int w, Rectangle bounds, Rectangle rec) { int difference = 0; - int minWidth = (int) (MINWIDTH * ((WFitLayout) wabs).getResolutionScaling()); + int minWidth = MINWIDTH; PaddingMargin margin = wabs.getMargin(); if (bounds.width != w) { if (bounds.width == rec.width - margin.getLeft() - margin.getRight()) { @@ -172,7 +172,7 @@ public class WidgetBoundPane extends BasicPane { public void limitHeight(WLayout wabs, int h, Rectangle bounds, Rectangle rec) { int difference = 0; PaddingMargin margin = wabs.getMargin(); - int minHeight = (int) (MINHEIGHT * ((WFitLayout) wabs).getResolutionScaling()); + int minHeight = MINHEIGHT; if (bounds.height != h) { if (bounds.height == rec.height - margin.getTop() - margin.getBottom()) { FineJOptionPane.showMessageDialog(null, i18nText("Fine-Design_Form_Beyond_Bounds"));