@ -1,6 +1,7 @@
package com.fr.design.designer.beans.models ;
import com.fr.common.inputevent.InputEventBaseOnOS ;
import com.fr.design.ExtraDesignClassManager ;
import com.fr.design.base.clipboard.ClipboardFilter ;
import com.fr.design.designer.beans.AdapterBus ;
import com.fr.design.designer.beans.LayoutAdapter ;
@ -19,11 +20,13 @@ import com.fr.design.designer.creator.cardlayout.XWCardMainBorderLayout;
import com.fr.design.designer.creator.cardlayout.XWTabFitLayout ;
import com.fr.design.form.util.FormDesignerUtils ;
import com.fr.design.form.util.XCreatorConstants ;
import com.fr.design.fun.FormWidgetOptionProvider ;
import com.fr.design.mainframe.FormDesigner ;
import com.fr.design.mainframe.FormSelection ;
import com.fr.design.mainframe.FormSelectionUtils ;
import com.fr.design.utils.ComponentUtils ;
import com.fr.design.utils.gui.LayoutUtils ;
import com.fr.general.ComparatorUtils ;
import com.fr.stable.ArrayUtils ;
import java.awt.LayoutManager ;
@ -31,6 +34,7 @@ import java.awt.Rectangle;
import java.awt.Toolkit ;
import java.awt.event.MouseEvent ;
import java.util.ArrayList ;
import java.util.Set ;
/ * *
* 该model保存当前选择的组件和剪切版信息
@ -43,6 +47,7 @@ public class SelectionModel {
private FormDesigner designer ;
private FormSelection selection ;
private Rectangle hotspotBounds ;
private FormWidgetOptionProvider provider ;
public SelectionModel ( FormDesigner designer ) {
this . designer = designer ;
@ -256,9 +261,30 @@ public class SelectionModel {
//绝对布局
Rectangle rec = selection . getSelctionBounds ( ) ;
FormSelectionUtils . paste2Container ( designer , container , clipboard , rec . x + DELTA_X_Y , rec . y + DELTA_X_Y ) ;
} else if ( isExtraContainer ( container ) ) {
provider . paste2Container ( selection ) ;
}
}
/ * *
* 扩展的容器布局
* @param container
* @return
* /
private boolean isExtraContainer ( XLayoutContainer container ) {
if ( container ! = null ) {
Set < FormWidgetOptionProvider > set = ExtraDesignClassManager . getInstance ( ) . getArray ( FormWidgetOptionProvider . XML_TAG ) ;
for ( FormWidgetOptionProvider provider : set ) {
if ( provider . isContainer ( ) & & ComparatorUtils . equals ( provider . appearanceForWidget ( ) , selection . getSelectedCreator ( ) . getParent ( ) . getClass ( ) ) ) {
this . provider = provider ;
return true ;
}
}
}
return false ;
}
/ * *
* 删除当前所有选择的组件
* /