Browse Source

REPORT-32210 Tab块拖动添加失败

bugfix/10.0
kerry 4 years ago
parent
commit
04007d7e04
  1. 14
      designer-form/src/main/java/com/fr/design/designer/beans/LayoutAdapter.java
  2. 21
      designer-form/src/main/java/com/fr/design/designer/beans/adapters/layout/AbstractLayoutAdapter.java
  3. 6
      designer-form/src/main/java/com/fr/design/designer/beans/adapters/layout/FRTabFitLayoutAdapter.java

14
designer-form/src/main/java/com/fr/design/designer/beans/LayoutAdapter.java

@ -42,6 +42,18 @@ public interface LayoutAdapter {
*/ */
boolean addBean(XCreator creator, int x, int y); boolean addBean(XCreator creator, int x, int y);
/**
* 组件的ComponentAdapter在添加组件时如果发现布局管理器不为空会继而调用该布局管理器的
* addComp方法来完成组件的具体添加在该方法内布局管理器可以提供额外的功能
*
* @param creator 被添加的新组件
* @param x 添加的位置x该位置是相对于container的
* @param y 添加的位置y该位置是相对于container的
* @param accept 是否添加新组件
* @return 是否添加成功成功返回true否则false
*/
boolean addBean(XCreator creator, int x, int y, boolean accept);
/** /**
* 返回该布局管理适配器的Painter为容器提供放置位置的标识 * 返回该布局管理适配器的Painter为容器提供放置位置的标识
*/ */
@ -91,4 +103,4 @@ public interface LayoutAdapter {
* @param initHeight 组件之前高度 * @param initHeight 组件之前高度
*/ */
void removeBean(XCreator creator, int initWidth, int initHeight); void removeBean(XCreator creator, int initWidth, int initHeight);
} }

21
designer-form/src/main/java/com/fr/design/designer/beans/adapters/layout/AbstractLayoutAdapter.java

@ -78,7 +78,23 @@ public abstract class AbstractLayoutAdapter implements LayoutAdapter {
*/ */
@Override @Override
public boolean addBean(XCreator creator, int x, int y) { public boolean addBean(XCreator creator, int x, int y) {
if (!accept(creator, x, y)) { boolean accept = accept(creator, x, y);
return addBean(creator, x, y, accept);
}
/**
* 组件的ComponentAdapter在添加组件时如果发现布局管理器不为空会继而调用该布局管理器的
* addComp方法来完成组件的具体添加在该方法内布局管理器可以提供额外的功能
*
* @param creator 被添加的新组件
* @param x 添加的位置x该位置是相对于container的
* @param y 添加的位置y该位置是相对于container的
* @param accept 是否添加新组件
* @return 是否添加成功成功返回true否则false
*/
@Override
public boolean addBean(XCreator creator, int x, int y, boolean accept) {
if (!accept) {
return false; return false;
} }
addComp(creator, x, y); addComp(creator, x, y);
@ -86,6 +102,7 @@ public abstract class AbstractLayoutAdapter implements LayoutAdapter {
return true; return true;
} }
/** /**
* 删除组件 * 删除组件
* *
@ -186,4 +203,4 @@ public abstract class AbstractLayoutAdapter implements LayoutAdapter {
public XLayoutContainer getContainer() { public XLayoutContainer getContainer() {
return this.container; return this.container;
} }
} }

6
designer-form/src/main/java/com/fr/design/designer/beans/adapters/layout/FRTabFitLayoutAdapter.java

@ -18,7 +18,8 @@ import com.fr.form.ui.container.cardlayout.WCardMainBorderLayout;
import com.fr.general.ComparatorUtils; import com.fr.general.ComparatorUtils;
import com.fr.general.act.BorderPacker; import com.fr.general.act.BorderPacker;
import java.awt.*; import java.awt.Rectangle;
/** /**
* tab布局tabFit适配器 * tab布局tabFit适配器
@ -73,8 +74,7 @@ public class FRTabFitLayoutAdapter extends FRFitLayoutAdapter {
y = adjustY(y, tabLayout); y = adjustY(y, tabLayout);
} }
//这时候应该要用计算后的父fit布局添加 //这时候应该要用计算后的父fit布局添加
this.container.getLayoutAdapter().addBean(creator, x, y); this.container.getLayoutAdapter().addBean(creator, x, y, true);
((XWidgetCreator) creator).recalculateChildrenSize();
return true; return true;
} }
// 如果不在边缘,容器为本自适应布局,增加组件的位置就是相对于容器的位置 // 如果不在边缘,容器为本自适应布局,增加组件的位置就是相对于容器的位置

Loading…
Cancel
Save