forked from fanruan/design
Browse Source
手机重布局不能触发保存以及保存不能生效的问题,已经得到解决了,不采用model的写法,会额外new一个对象,导致读属性和写属性所在对象不是同一个,严重bug,这样代码也得到了很大的精简。master
Lee
9 years ago
6 changed files with 39 additions and 188 deletions
@ -1,21 +0,0 @@ |
|||||||
package com.fr.design.designer.beans.adapters.layout; |
|
||||||
|
|
||||||
import com.fr.design.beans.GroupModel; |
|
||||||
import com.fr.design.designer.creator.XLayoutContainer; |
|
||||||
import com.fr.design.designer.creator.XWFitLayout; |
|
||||||
import com.fr.design.designer.properties.BodyMobileLayoutPropertiesGroupModel; |
|
||||||
|
|
||||||
public class FRBodyFitLayoutAdapter extends FRFitLayoutAdapter { |
|
||||||
|
|
||||||
public FRBodyFitLayoutAdapter(XLayoutContainer container) { |
|
||||||
super(container); |
|
||||||
} |
|
||||||
/** |
|
||||||
* 返回布局自身属性,方便一些特有设置在layout刷新时处理 |
|
||||||
*/ |
|
||||||
@Override |
|
||||||
public GroupModel getLayoutProperties() { |
|
||||||
XWFitLayout xfl = (XWFitLayout) container; |
|
||||||
return new BodyMobileLayoutPropertiesGroupModel(xfl); |
|
||||||
} |
|
||||||
} |
|
@ -1,20 +0,0 @@ |
|||||||
package com.fr.design.designer.creator; |
|
||||||
|
|
||||||
import com.fr.design.designer.beans.LayoutAdapter; |
|
||||||
import com.fr.design.designer.beans.adapters.layout.FRBodyFitLayoutAdapter; |
|
||||||
import com.fr.form.ui.container.WFitLayout; |
|
||||||
import java.awt.Dimension; |
|
||||||
|
|
||||||
public class XWBodyFitLayout extends XWFitLayout { |
|
||||||
public XWBodyFitLayout() { |
|
||||||
this(new WFitLayout(), new Dimension()); |
|
||||||
} |
|
||||||
|
|
||||||
public XWBodyFitLayout(WFitLayout widget, Dimension initSize) { |
|
||||||
super(widget, initSize); |
|
||||||
} |
|
||||||
@Override |
|
||||||
public LayoutAdapter getLayoutAdapter() { |
|
||||||
return new FRBodyFitLayoutAdapter(this); |
|
||||||
} |
|
||||||
} |
|
@ -1,111 +0,0 @@ |
|||||||
package com.fr.design.designer.properties; |
|
||||||
|
|
||||||
import com.fr.design.beans.GroupModel; |
|
||||||
import com.fr.form.ui.container.WFitLayout; |
|
||||||
import com.fr.design.designer.creator.XWFitLayout; |
|
||||||
import com.fr.design.gui.icheckbox.UICheckBox; |
|
||||||
import com.fr.design.mainframe.widget.editors.BooleanEditor; |
|
||||||
import com.fr.design.mainframe.widget.editors.PropertyCellEditor; |
|
||||||
import com.fr.general.Inter; |
|
||||||
|
|
||||||
import javax.swing.*; |
|
||||||
import javax.swing.table.TableCellEditor; |
|
||||||
import javax.swing.table.TableCellRenderer; |
|
||||||
import java.awt.*; |
|
||||||
|
|
||||||
public class BodyMobileLayoutPropertiesGroupModel implements GroupModel { |
|
||||||
private PropertyCellEditor reLayoutEditor; |
|
||||||
private CheckBoxCellRenderer reLayoutrenderer; |
|
||||||
private WFitLayout layout; |
|
||||||
private XWFitLayout xfl; |
|
||||||
|
|
||||||
public BodyMobileLayoutPropertiesGroupModel(XWFitLayout xfl) { |
|
||||||
this.xfl = xfl; |
|
||||||
this.layout = xfl.toData(); |
|
||||||
reLayoutrenderer = new CheckBoxCellRenderer(); |
|
||||||
reLayoutEditor = new PropertyCellEditor(new BooleanEditor()); |
|
||||||
} |
|
||||||
|
|
||||||
@Override |
|
||||||
public String getGroupName() { |
|
||||||
return Inter.getLocText("FR-Designer-Layout_Adaptive_Layout"); |
|
||||||
} |
|
||||||
|
|
||||||
@Override |
|
||||||
public int getRowCount() { |
|
||||||
return 1; |
|
||||||
} |
|
||||||
|
|
||||||
@Override |
|
||||||
public TableCellRenderer getRenderer(int row) { |
|
||||||
return reLayoutrenderer; |
|
||||||
} |
|
||||||
|
|
||||||
@Override |
|
||||||
public TableCellEditor getEditor(int row) { |
|
||||||
return reLayoutEditor; |
|
||||||
} |
|
||||||
|
|
||||||
@Override |
|
||||||
public Object getValue(int row, int column) { |
|
||||||
if (column == 0) { |
|
||||||
return Inter.getLocText("FR-Designer-App_ReLayout"); |
|
||||||
}else { |
|
||||||
return layout.getAppRelayout(); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
@Override |
|
||||||
public boolean setValue(Object value, int row, int column) { |
|
||||||
int state = 0; |
|
||||||
boolean appRelayoutState = true; |
|
||||||
if(value instanceof Integer) { |
|
||||||
state = (Integer)value; |
|
||||||
}else if (value instanceof Boolean) { |
|
||||||
appRelayoutState = (boolean)value; |
|
||||||
} |
|
||||||
if (column == 0 || state < 0) { |
|
||||||
return false; |
|
||||||
} else { |
|
||||||
layout.setAppRelayout(appRelayoutState); |
|
||||||
return true; |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
/** |
|
||||||
* 是否可编辑 |
|
||||||
* @param row 行 |
|
||||||
* @return 否 |
|
||||||
*/ |
|
||||||
@Override |
|
||||||
public boolean isEditable(int row) { |
|
||||||
return true; |
|
||||||
} |
|
||||||
|
|
||||||
private class CheckBoxCellRenderer extends UICheckBox implements TableCellRenderer { |
|
||||||
|
|
||||||
|
|
||||||
public CheckBoxCellRenderer() { |
|
||||||
super(); |
|
||||||
setOpaque(true); |
|
||||||
|
|
||||||
} |
|
||||||
|
|
||||||
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { |
|
||||||
if (value instanceof Boolean) { |
|
||||||
setSelected(((Boolean) value).booleanValue()); |
|
||||||
setEnabled(table.isCellEditable(row, column)); |
|
||||||
if (isSelected) { |
|
||||||
setBackground(table.getSelectionBackground()); |
|
||||||
setForeground(table.getSelectionForeground()); |
|
||||||
} else { |
|
||||||
setForeground(table.getForeground()); |
|
||||||
setBackground(table.getBackground()); |
|
||||||
} |
|
||||||
} else { |
|
||||||
return null; |
|
||||||
} |
|
||||||
return this; |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
Loading…
Reference in new issue