@ -3,6 +3,7 @@
* /
package com.fr.design.designer.beans.adapters.layout ;
import com.fr.design.ExtraDesignClassManager ;
import com.fr.design.beans.GroupModel ;
import com.fr.design.designer.beans.ConstraintsGroupModel ;
import com.fr.design.designer.beans.HoverPainter ;
@ -18,6 +19,7 @@ import com.fr.design.designer.creator.cardlayout.XWCardTitleLayout;
import com.fr.design.designer.creator.cardlayout.XWTabFitLayout ;
import com.fr.design.designer.properties.FRFitLayoutConstraints ;
import com.fr.design.designer.properties.FRFitLayoutPropertiesGroupModel ;
import com.fr.design.fun.FormWidgetOptionProvider ;
import com.fr.design.utils.ComponentUtils ;
import com.fr.form.ui.LayoutBorderStyle ;
import com.fr.form.ui.container.WAbsoluteLayout ;
@ -32,6 +34,7 @@ import java.awt.Dimension;
import java.awt.Rectangle ;
import java.util.ArrayList ;
import java.util.List ;
import java.util.Set ;
/ * *
* 自适应布局的容器适配器
@ -161,7 +164,8 @@ public class FRFitLayoutAdapter extends FRBodyLayoutAdapter {
//布局控件要先判断是不是可编辑
XLayoutContainer topLayout = XCreatorUtils . getHotspotContainer ( ( XCreator ) comp ) . getTopLayout ( ) ;
if ( topLayout ! = null & & ! isMatchEdge & & ! topLayout . isEditable ( ) & & ! topLayout . acceptType ( XWAbsoluteLayout . class ) ) {
boolean access = topLayout ! = null & & ! isMatchEdge & & ! topLayout . isEditable ( ) & & ! topLayout . acceptType ( XWAbsoluteLayout . class ) & & ! isExtraContainer ( comp ) ;
if ( access ) {
return false ;
}
@ -178,6 +182,18 @@ public class FRFitLayoutAdapter extends FRBodyLayoutAdapter {
return y > upHeight & & y < downHeight ? horizonValid : verticalValid ;
}
private boolean isExtraContainer ( Component comp ) {
if ( container ! = null ) {
Set < FormWidgetOptionProvider > set = ExtraDesignClassManager . getInstance ( ) . getArray ( FormWidgetOptionProvider . XML_TAG ) ;
for ( FormWidgetOptionProvider provider : set ) {
if ( provider . isContainer ( ) & & ComparatorUtils . equals ( provider . appearanceForWidget ( ) , comp . getClass ( ) ) ) {
return true ;
}
}
}
return false ;
}
// 间隔区域
private boolean checkInterval ( Component comp ) {
return container . getComponentCount ( ) > 0 & & comp = = container ;