首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

利用GEF打造表格系统(模型设计)

2012-11-13 
利用GEF制作表格系统(模型设计)模型设计1、建立通用模型,实现模型属性变化的跟踪public class AbstractNode

利用GEF制作表格系统(模型设计)

模型设计

1、建立通用模型,实现模型属性变化的跟踪

public class AbstractNode implements Cloneable,IPropertySource, Serializable {

????? private static final long serialVersionUID=10000100L;

?????

?????

????? private PropertyChangeSupport listeners = new PropertyChangeSupport(this);

????? public void addPropertyChangeListener(PropertyChangeListener listener){

???????????? listeners.addPropertyChangeListener(listener);

????? }

????? public void firePropertyChange(String propName,Object oldValue,Object newValue){

???????????? listeners.firePropertyChange(propName,oldValue,newValue);

????? }

????? public void removePropertyChange(PropertyChangeListener listener){

???????????? listeners.removePropertyChangeListener(listener);

????? }

}

?

2、建立画布模型,增加子元素列表,实现子元素变化的追踪

public class DiagramNode extends AbstractNode{

????? public static final String P_CHILDREN ="_children";

????? protected List children=new ArrayList();?

????? public void setChildren(List children){

???????????? if(children !=? null){

??????????????????? this.children=children;

???????????? }else{

??????????????????? this.children=new ArrayList();

???????????? }

???????????? this.firePropertyChange(P_CHILDREN, null, children);

????? }

????? public List getChildren(){

???????????? return this.children;

????? }

????? public void addChild(Object child){

???????????? children.add(child);

???????????? firePropertyChange(P_CHILDREN, null, null);?????

????? }

????? public void addChild(int index,Object child){

???????????? if(index == -1){?????????????????

??????????????????? this.children.add(child);

???????????? }else{

??????????????????? this.children.add(index, child);

???????????? }

???????????? firePropertyChange(P_CHILDREN,null,null);

????? }????

????? public void removeChild(Object child){

???????????? children.remove(child);

???????????? firePropertyChange(P_CHILDREN,null,null);

????? }

????? public void moveChild(int index,AbstractNode child){

??? ???? children.remove(child);

??? ???? children.add(index, child);

??? ???? firePropertyChange(P_CHILDREN,null,null);

??? }

}

3、建立表格模型,增加子元素列表,实现对子元素变化的追踪;建立表格间距等属性的编辑和追踪管理

public class TableNode extends AbstractNode {

????? public static final String P_CHILDREN ="_children";

????? public static final String P_GRIDMANAGER="_gmanaer";

????? public static final String P_CHILDCHANGE="_change";

????? public static final String P_TABLEHSPACE="_hspace";

????? public static final String P_TABLEVSPACE="_vspace";

????? public static final String P_MARGINWIDTH="_hmargin";

????? public static final String P_MARGINHEIGHT="_vmargin";

????? public static final String P_TABLEBGCOLOR="_bgcolor";

????? public static final String P_OPERATE="_operate";

?????

????? protected List children=new ArrayList();?

????? private boolean border=true;

????? private GridLayout grid;

????? private int widthHint? = 20;

????? private int heightHint = 20;

????? private int rows=0;

????? private String operate="row";

????? private boolean childChange=false;

?????

????? private String bgColor="255:255:255";

????? public TableNode(){

???????????? super();

???????????? constraint.width=widthHint*4;

???????????? constraint.height=40;

????? }

????? public void setChildren(List children){

???????????? if(children !=? null){

??????????????????? this.children=children;

???????????? }else{

??????????????????? this.children=new ArrayList();

???????????? }

???????????? this.firePropertyChange(P_CHILDREN, null, children);

????? }

????? public List getChildren(){

???????????? return this.children;

????? }

????? public void addChild(Object child){

???????????? children.add(child);

???????????? firePropertyChange(P_CHILDREN, null, null);

?????

????? }

????? public void addChild(int index,Object child){

???????????? if(index == -1){

???????????????????

??????????????????? this.children.add(child);

???????????? }else{

??????????????????? this.children.add(index, child);

???????????? }

???????????? firePropertyChange(P_CHILDREN,null,null);

????? }

?????

????? public void removeChild(Object child){

???????????? children.remove(child);

???????????? firePropertyChange(P_CHILDREN,null,null);

????? }

????? public void moveChild(int index,AbstractNode child){

??? ???? children.remove(child);

??? ???? children.add(index, child);

??? ???? firePropertyChange(P_CHILDREN,null,null);

?? ?}

??

????? public GridLayout getGrid() {

???????????? if(grid==null){

??????????????????? grid = new GridLayout();

??????????????????? grid.numColumns=4;

???????????? }

???????????? return grid;

????? }

????? public void setGrid(GridLayout grid) {

???????????? this.grid = grid;

???????????? this.firePropertyChange(P_GRIDMANAGER, null, grid);

????? }

????? public boolean isBorder() {

???????????? return border;

????? }

????? public void setBorder(boolean border) {

???????????? this.border = border;

????? }

????? public int getWidthHint() {

???????????? return widthHint;

????? }

????? public void setWidthHint(int widthHint) {

???????????? this.widthHint = widthHint;

????? }

????? public int getHeightHint() {

???????????? return heightHint;

????? }

????? public void setHeightHint(int heightHint) {

???????????? this.heightHint = heightHint;

????? }

????? public int getRows() {

???????????? return rows;

????? }

????? public void setRows(int rows) {

???????????? this.rows = rows;

????? }

????? public String getOperate() {

???????????? return operate;

????? }

????? public void setOperate(String operate) {

???????????? this.operate = operate;

????? }

????? public boolean isChildChange() {

???????????? return childChange;

????? }

????? public void setChildChange(boolean childChange) {

???????????? this.childChange = childChange;

???????????? this.firePropertyChange(P_CHILDCHANGE, null, null);

????? }

????? //表格属性

????? public int getTableHorizontalSpace(){

???????????? GridLayout grid=getGrid();

???????????? return grid.horizontalSpacing;

????? }

????? public void setTableHorizontalSpace(String ss){

???????????? GridLayout grid=getGrid();

???????????? int delta=Integer.parseInt(ss)-grid.horizontalSpacing;

???????????? if(delta != 0){

??????????????????? grid.horizontalSpacing=Integer.parseInt(ss);

??????????????????? this.firePropertyChange(P_GRIDMANAGER,null,"hspace:"+delta);

???????????? }

????? }

?????

????? public int getTableVerticalSpace(){

???????????? GridLayout grid=getGrid();

???????????? return grid.verticalSpacing;

????? }

????? public void setTableVerticalSpace(String ss){

???????????? GridLayout grid=getGrid();

???????????? int delta=Integer.parseInt(ss) - grid.verticalSpacing ;

???????????? if(delta != 0){

??????????????????? grid.verticalSpacing=Integer.parseInt(ss);

??????????????????? this.firePropertyChange(P_GRIDMANAGER,null,"vspace:"+delta);

????? ?????? }

????? }

?????

????? public int getTableHorizontalMargin(){

???????????? GridLayout grid=getGrid();

???????????? return grid.marginWidth;

????? }

????? public void setTableHorizontalMargin(String ss){

???????????? GridLayout grid=getGrid();

???????????? int delta=Integer.parseInt(ss) - grid.marginWidth;

???????????? if(delta !=0 ){

??????????????????? grid.marginWidth=Integer.parseInt(ss);

??????????????????? this.firePropertyChange(P_GRIDMANAGER,null, margin:"+delta);

???????????? }

????? }

?????

????? public int getTableVerticalMargin(){

???????????? GridLayout grid=getGrid();

???????????? return grid.marginHeight;

????? }

????? public void setTableVerticalMargin(String ss){

???????????? GridLayout grid=getGrid();

???????????? int delta=Integer.parseInt(ss) - grid.marginHeight;

???????????? if(delta != 0){

??????????????????? grid.marginHeight=Integer.parseInt(ss);

??????????????????? this.firePropertyChange(P_GRIDMANAGER, null, "vmargin:"+delta);

???????????? }

????? }

????? public Color getBgColor() {

???????????? if(this.bgColor ==null){

??????????????????? return new Color(null,255,255,255);

???????????? }else{

??????????????????? String[] rgb=bgColor.split(":");

??????????????????? return new Color(null,Integer.parseInt(rgb[0]),Integer.parseInt(rgb[1]),Integer.parseInt(rgb[2]));

???????????? }

????????????

????? }

????? public void setBgColor(Color bgColor) {

???????????? this.bgColor = bgColor.getRed()+":"+bgColor.getGreen()+":"+bgColor.getBlue();

???????????? this.firePropertyChange(P_TABLEBGCOLOR, null, null);

????? }

?????

热点排行