Browse Source

REPORT-57810 固定布局-原布局推荐4.1

research/11.0
kerry 3 years ago
parent
commit
f13287a467
  1. 12
      designer-form/src/main/java/com/fr/design/designer/beans/adapters/layout/FRFixLayoutAdapter.java
  2. 9
      designer-form/src/main/java/com/fr/design/designer/beans/adapters/layout/FROccupiedLayoutAdapter.java
  3. 4
      designer-form/src/main/java/com/fr/design/designer/creator/XLayoutContainer.java
  4. 16
      designer-form/src/main/java/com/fr/design/designer/creator/XWFitLayout.java

12
designer-form/src/main/java/com/fr/design/designer/beans/adapters/layout/FRFixLayoutAdapter.java

@ -32,12 +32,11 @@ public class FRFixLayoutAdapter extends AbstractLayoutAdapter {
} }
child.setLocation(component.getX(), component.getY()); child.setLocation(component.getX(), component.getY());
child.setSize(component.getWidth(), component.getHeight()); child.setSize(component.getWidth(), component.getHeight());
container.remove(component);
if (child.shouldScaleCreator() || child.hasTitleStyle()) { if (child.shouldScaleCreator() || child.hasTitleStyle()) {
XLayoutContainer parentPanel = child.initCreatorWrapper(21); XLayoutContainer parentPanel = child.initCreatorWrapper(21);
container.add(parentPanel, child.toData().getWidgetName()); container.replaceXcreator(parentPanel, (XCreator) component);
} else { } else {
container.add(child, child.toData().getWidgetName()); container.replaceXcreator(child, (XCreator) component);
} }
if (child.getBackupRectangle() != null && child.getParent() == container) { if (child.getBackupRectangle() != null && child.getParent() == container) {
Component origin = container.getComponentAt(child.getBackupRectangle().x + 5, child.getBackupRectangle().y + 5); Component origin = container.getComponentAt(child.getBackupRectangle().x + 5, child.getBackupRectangle().y + 5);
@ -52,15 +51,20 @@ public class FRFixLayoutAdapter extends AbstractLayoutAdapter {
@Override @Override
public void delete(XCreator creator, int creatorWidth, int creatorHeight) { public void delete(XCreator creator, int creatorWidth, int creatorHeight) {
//固定布局下不支持移除占位块组件
if (creator.acceptType(XOccupiedLayout.class)){
return;
}
OccupiedLayout occupiedLayout = new OccupiedLayout(); OccupiedLayout occupiedLayout = new OccupiedLayout();
FormDesigner formDesigner = WidgetPropertyPane.getInstance().getEditingFormDesigner(); FormDesigner formDesigner = WidgetPropertyPane.getInstance().getEditingFormDesigner();
XOccupiedLayout xoccupiedLayout = new XOccupiedLayout(occupiedLayout, new Dimension()); XOccupiedLayout xoccupiedLayout = new XOccupiedLayout(occupiedLayout, new Dimension());
ModelUtil.renameWidgetName(formDesigner.getTarget(), xoccupiedLayout); ModelUtil.renameWidgetName(formDesigner.getTarget(), xoccupiedLayout);
xoccupiedLayout.setLocation(creator.getX(), creator.getY()); xoccupiedLayout.setLocation(creator.getX(), creator.getY());
xoccupiedLayout.setSize(creatorWidth, creatorHeight); xoccupiedLayout.setSize(creatorWidth, creatorHeight);
container.add(xoccupiedLayout); container.replaceXcreator(xoccupiedLayout,creator);
} }
@Override @Override
public XCreatorTreeCellRender getLayoutTreeCellRender(XCreator creator) { public XCreatorTreeCellRender getLayoutTreeCellRender(XCreator creator) {
return new DefaultXCreatorTreeCellRender(creator) { return new DefaultXCreatorTreeCellRender(creator) {

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

@ -9,18 +9,15 @@ import com.fr.design.designer.treeview.XCreatorTreeCellRender;
import com.fr.design.utils.gui.LayoutUtils; import com.fr.design.utils.gui.LayoutUtils;
import java.awt.Color; import java.awt.Color;
import java.awt.Component; import java.awt.Component;
import java.awt.Container;
import java.awt.Graphics; import java.awt.Graphics;
public class FROccupiedLayoutAdapter extends AbstractLayoutAdapter { public class FROccupiedLayoutAdapter extends AbstractLayoutAdapter {
public FROccupiedLayoutAdapter(XLayoutContainer container) { public FROccupiedLayoutAdapter(XLayoutContainer container) {
super(container); super(container);
painter = new FROccupiedLayoutPainter(container); painter = new FROccupiedLayoutPainter(container);
} }
private HoverPainter painter; private HoverPainter painter;
@ -29,14 +26,12 @@ public class FROccupiedLayoutAdapter extends AbstractLayoutAdapter {
if (container.getComponentCount() == 0) { if (container.getComponentCount() == 0) {
creator.setLocation(container.getLocation().x, container.getLocation().y); creator.setLocation(container.getLocation().x, container.getLocation().y);
creator.setSize(container.getWidth(), container.getHeight()); creator.setSize(container.getWidth(), container.getHeight());
//将 xcreator 添加到其父容器中,并删除此
XLayoutContainer parent = (XLayoutContainer) container.getParent(); XLayoutContainer parent = (XLayoutContainer) container.getParent();
parent.getLayoutAdapter().removeBean(container, container.getWidth(), container.getHeight());
if (creator.shouldScaleCreator() || creator.hasTitleStyle()) { if (creator.shouldScaleCreator() || creator.hasTitleStyle()) {
XLayoutContainer parentPanel = creator.initCreatorWrapper(21); XLayoutContainer parentPanel = creator.initCreatorWrapper(21);
parent.add(parentPanel, creator.toData().getWidgetName()); parent.replaceXcreator(parentPanel, container);
} else { } else {
parent.add(creator, creator.toData().getWidgetName()); parent.replaceXcreator(creator, container);
} }
LayoutUtils.layoutContainer(parent); LayoutUtils.layoutContainer(parent);
} }

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

@ -608,4 +608,8 @@ public abstract class XLayoutContainer extends XBorderStyleWidgetCreator impleme
public boolean supportFixLayout(){ public boolean supportFixLayout(){
return false; return false;
} }
public void replaceXcreator(XCreator newCreator, XCreator oldCreator){
}
} }

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

@ -3,6 +3,7 @@ package com.fr.design.designer.creator;
import com.fr.design.designer.beans.LayoutAdapter; import com.fr.design.designer.beans.LayoutAdapter;
import com.fr.design.designer.beans.adapters.layout.FRFitLayoutAdapter; 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.FRFixLayoutAdapter;
import com.fr.design.designer.beans.adapters.layout.FRNoFixLayoutAdapter;
import com.fr.design.designer.beans.location.Direction; import com.fr.design.designer.beans.location.Direction;
import com.fr.design.designer.creator.cardlayout.XWCardMainBorderLayout; import com.fr.design.designer.creator.cardlayout.XWCardMainBorderLayout;
import com.fr.design.designer.creator.cardlayout.XWTabFitLayout; import com.fr.design.designer.creator.cardlayout.XWTabFitLayout;
@ -82,6 +83,7 @@ public class XWFitLayout extends XLayoutContainer {
@Override @Override
public LayoutAdapter getLayoutAdapter() { public LayoutAdapter getLayoutAdapter() {
FRFitLayoutAdapter layoutAdapter = new FRFitLayoutAdapter(this); FRFitLayoutAdapter layoutAdapter = new FRFitLayoutAdapter(this);
if (isFixLayout) { if (isFixLayout) {
layoutAdapter.setFrLayoutState(new FRFixLayoutAdapter(this)); layoutAdapter.setFrLayoutState(new FRFixLayoutAdapter(this));
} }
@ -871,10 +873,22 @@ public class XWFitLayout extends XLayoutContainer {
Widget wgt = xwc.toData(); Widget wgt = xwc.toData();
BoundsWidget bw = (BoundsWidget) wlayout.getBoundsWidget(wgt); BoundsWidget bw = (BoundsWidget) wlayout.getBoundsWidget(wgt);
wlayout.removeWidget(bw); wlayout.removeWidget(bw);
if(!isFixLayout){
updateBoundsWidget(); updateBoundsWidget();
((FRFitLayoutAdapter) getLayoutAdapter()).updateCreatorBackBound(); ((FRFitLayoutAdapter) getLayoutAdapter()).updateCreatorBackBound();
} }
public void replaceXcreator(XCreator newCreator, XCreator oldCreator) {
WFitLayout wlayout = this.toData();
Widget wgt = oldCreator.toData();
BoundsWidget bw = (BoundsWidget) wlayout.getBoundsWidget(wgt);
wlayout.removeWidget(bw);
wlayout.addWidget(new BoundsWidget(newCreator.toData(), bw.getBounds()));
newCreator.setBackupParent(this);
isRefreshing = true;
this.remove(oldCreator);
this.add(newCreator);
isRefreshing = false;
LayoutUtils.layoutContainer(this);
} }
/** /**

Loading…
Cancel
Save