[MCFrame]设置客户端Table单元格的颜色

配置一览结果集的颜色(前景色,背景色,边框)                                                                
一、SXP_CellConfigの中に、Cellの拡張定義                                                                
    现在定义在Seisan,可以移到Bcomm或xApplication里    

@Override
 protected Border getColumnBorder(int index, MCColumnConfig column,
   MCTable<?> table) { 
  MCRootPanel rootPanel = table.getBaseRootPanel();
  String bcKey = MCConst.createKey(new String[] {
    rootPanel.getModuleID(), rootPanel.getScreenID(), column.getName(), ""bc""
  });  
  String label = MCConst.label.getLabel(bcKey);
  if (!isNull(label)) {
   Color color = MCResource.createColor(label);
   LineBorder redBorder = new LineBorder(color, 1, true);
   return redBorder;
  } 
  return super.getColumnBorder(index, column, table);
 }

 @Override
 protected Color getCustomBG(int index, MCColumnConfig column, MCTable table,
   MCMode mode) {
  MCRootPanel rootPanel = table.getBaseRootPanel();
  String bgKey = MCConst.createKey(new String[] {
    rootPanel.getModuleID(), rootPanel.getScreenID(), column.getName(), ""bg""
  });
  Color color = super.getCustomBG(index, column, table, mode);
  String label = MCConst.label.getLabel(bgKey);
  if (!isNull(label)) {
   color = MCResource.createColor(label);
  }
  return color;
 }

 @Override
 protected Color getCustomFG(int index, MCColumnConfig column, MCTable table,
   MCMode mode) {
  MCRootPanel rootPanel = table.getBaseRootPanel();
  String fgKey = MCConst.createKey(new String[] {
    rootPanel.getModuleID(), rootPanel.getScreenID(), column.getName(), ""fg""
  });
  Color color = super.getCustomFG(index, column, table, mode);
  String label = MCConst.label.getLabel(fgKey);
  if (!isNull(label)) {
   color = MCResource.createColor(label);
  }
  return color;
 }

 public static void setCellConfig(MCTable<?> table) {
  MCRootPanel rootPanel = table.getBaseRootPanel();
  String fgKey = MCConst.createKey(new String[] {
    rootPanel.getModuleID(), rootPanel.getScreenID(), table.getName(), ""fg""
  });
  String bgKey = MCConst.createKey(new String[] {
    rootPanel.getModuleID(), rootPanel.getScreenID(), table.getName(), ""bg""
  });
  String bcKey = MCConst.createKey(new String[] {
    rootPanel.getModuleID(), rootPanel.getScreenID(), table.getName(), ""bc""
  });

  StringBuilder sb = new StringBuilder();
  sb.append(""<!--MCTable-->"" + System.lineSeparator());
  sb.append(""<"" + fgKey + ""></"" + fgKey + "">"" + System.lineSeparator());
  sb.append(""<"" + bgKey + ""></"" + bgKey + "">"" + System.lineSeparator());
  sb.append(""<"" + bcKey + ""></"" + bcKey + "">"" + System.lineSeparator());
  sb.append(""<!--MCColumn-->"" + System.lineSeparator());
  for (MCColumnConfig column : table.getColumnConfigs()) {
   fgKey = MCConst.createKey(new String[] {
     rootPanel.getModuleID(), rootPanel.getScreenID(), column.getName(),
     ""fg""
   });
   bgKey = MCConst.createKey(new String[] {
     rootPanel.getModuleID(), rootPanel.getScreenID(), column.getName(),
     ""bg""
   });
   bcKey = MCConst.createKey(new String[] {
     rootPanel.getModuleID(), rootPanel.getScreenID(), column.getName(),
     ""bc""
   });
   sb.append(""<"" + fgKey + ""></"" + fgKey + "">"" + System.lineSeparator());
   sb.append(""<"" + bgKey + ""></"" + bgKey + "">"" + System.lineSeparator());
   sb.append(""<"" + bcKey + ""></"" + bcKey + "">"" + System.lineSeparator());
  }
  MCBeansUtil.log(table, mcframe.commonS.notice.S_Msg.SBP0001W, sb.toString());
  
  String label = MCConst.label.getLabel(fgKey);
  if (!isNull(label)) {
   Color color = MCResource.createColor(label);
   for (MCColumnConfig column : table.getColumnConfigs())
    column.setHeaderForeground(color);
  }
  label = MCConst.label.getLabel(bgKey);
  if (!isNull(label)) {
   Color color = MCResource.createColor(label);
   for (MCColumnConfig column : table.getColumnConfigs())
    column.setHeaderBackground(color);
  }
  label = MCConst.label.getLabel(bcKey);
  if (!isNull(label)) {
   Color color = MCResource.createColor(label);
   LineBorder redBorder = new LineBorder(color, 1, true);
   for (MCColumnConfig column : table.getColumnConfigs()) {
    column.setBorder(redBorder);
   }
  }
  
  MCTable<?>[] partsTables = table.getPartsTables();
  for (MCTable<?> tbl : partsTables) {
   if (tbl.getCellConfig() instanceof MCCellConfig
     || tbl.getCellConfig() instanceof XPP_CellConfig) {
    tbl.setCellConfig(new SXP_CellConfig());
   }
   else if (tbl.getCellConfig() instanceof SXP_CellConfig) {

   }
   else {
    throw new MCException(Core_Msg_FW_A.WP000061, new Object[] {
      tbl.getName()
    });
   }
   setCellConfig(tbl);
  }
 }

二、画面実装

RsltTable:本画面的结果集

@Override
 protected void setCellConfig() {
  super.setCellConfig();

  SXP_CellConfig.setCellConfig(RsltTable);
 }

三、Color定義

以Table和Column的Name为基准,定义颜色的KEY
    前景色:fg
    背景色:bg
    边框色:bc

设置示例

<mcframe>															
		<MCLabel>														
			<S.SBP0020>													
				<!-- MCLabel -->												
				<Upd.po_dt_Label.bg>100,200,100</Upd.po_dt_Label.bg>												
				<Upd.po_dt_Label.fg>100,100,100</Upd.po_dt_Label.fg>												
				<!-- MCColumn -->												
				<Rslt.schd_dlv_dt.fg>0,123,123</Rslt.schd_dlv_dt.fg>前景色	按单元格定义				
				<Rslt.schd_dlv_dt.bg></Rslt.schd_dlv_dt.bg>												
				<Rslt.schd_dlv_dt.bc></Rslt.schd_dlv_dt.bc>												
				<Sppl.sppl_nm.fg></Sppl.sppl_nm.fg>												
				<Sppl.sppl_nm.bg></Sppl.sppl_nm.bg>												
				<Sppl.sppl_nm.bc>0,250,0</Sppl.sppl_nm.bc>优先以Column为单位设置Column的边框色					
				<!--MCTable-->												
				<Rslt.table.fg></Rslt.table.fg>												
				<Rslt.table.bg></Rslt.table.bg>												
				<Rslt.table.bc></Rslt.table.bc>												
				<Sno.table.fg>255,40,0</Sno.table.fg>												
				<Sno.table.bg>0,0,210</Sno.table.bg>												
				<Sno.table.bc></Sno.table.bc>												
				<ItmPurcInfo.table.fg>255,80,0</ItmPurcInfo.table.fg>												
				<ItmPurcInfo.table.bg>0,0,170</ItmPurcInfo.table.bg>												
				<ItmPurcInfo.table.bc></ItmPurcInfo.table.bc>												
				<Dpt.table.fg>255,120,0</Dpt.table.fg>												
				<Dpt.table.bg>0,0,130</Dpt.table.bg>												
				<Dpt.table.bc></Dpt.table.bc>												
				<Itm.table.fg>255,160,0</Itm.table.fg>												
				<Itm.table.bg>0,0,90</Itm.table.bg>												
				<Itm.table.bc>250,0,0</Itm.table.bc>												
				<PoDNo.table.fg>255,200,0</PoDNo.table.fg>前景色	setHeaderForeground				
				<PoDNo.table.bg>0,0,50</PoDNo.table.bg>背景色	setHeaderBackground				
				<PoDNo.table.bc></PoDNo.table.bc>												
				<Sppl.table.fg></Sppl.table.fg>												
				<Sppl.table.bg></Sppl.table.bg>												
				<Sppl.table.bc>255,0,0</Sppl.table.bc>以Table为单位设置Column的边框色					
			</S.SBP0020>													
		</MCLabel>														
	</mcframe>	

#SXP_CellConfig.java修改示例

package mcframe.clientSX.SXP0000;

import java.awt.Color;

import javax.swing.border.Border;
import javax.swing.border.LineBorder;

import mcframe.clientCore.beans.MCBeansUtil;
import mcframe.clientCore.beans.MCMode;
import mcframe.clientCore.beans.MCRootPanel;
import mcframe.clientCore.beans.table.MCCellConfig;
import mcframe.clientCore.beans.table.MCColumnConfig;
import mcframe.clientCore.beans.table.MCTable;
import mcframe.clientCore.resource.MCConst;
import mcframe.clientXP.XPP0070.XPP_CellConfig;
import mcframe.commonCore.annotation.EI;
import mcframe.commonCore.notice.Core_Msg_FW_A;
import mcframe.commonCore.notice.MCException;
import mcframe.commonCore.resource.ctrl.MCResource;
import static mcframe.clientCU.CUP0010.CUP_MCDataUtil.*;
/**
 * extends以外は本クラスを直接編集しないで下さい。
 * カスタマイズする場合はSXP_CellConfig_MCと本クラスの間にカスタマイズクラスを挟んでください。<br>
 * その場合は本クラスのextendsを書き換える必要があります。
 */
@EI
public class SXP_CellConfig extends SXP_CellConfig_MC {

	@Override
	protected Border getColumnBorder(int index, MCColumnConfig column, MCTable<?> table) {
		MCRootPanel rootPanel = table.getBaseRootPanel();
		String bcKey = MCConst.createKey(new String[] {
				rootPanel.getModuleID(), rootPanel.getScreenID(), column.getName(), "bc"
		});
		String label = MCConst.app.getString(bcKey);
		if (!isNull(label)) {
			Color color = MCResource.createColor(label);
			LineBorder redBorder = new LineBorder(color, 1, true);
			return redBorder;
		}
		bcKey = MCConst.createKey(new String[] {
				rootPanel.getModuleID(), rootPanel.getScreenID(), table.getName(), "bc"
		});
		label = MCConst.app.getString(bcKey);
		if (!isNull(label)) {
			Color color = MCResource.createColor(label);
			LineBorder redBorder = new LineBorder(color, 1, true);
			return redBorder;
		}
		return super.getColumnBorder(index, column, table);
	}

	@Override
	protected Color getCustomBG(int index, MCColumnConfig column, MCTable table,
			MCMode mode) {
		MCRootPanel rootPanel = table.getBaseRootPanel();
		String bgKey = MCConst.createKey(new String[] {
				rootPanel.getModuleID(), rootPanel.getScreenID(), column.getName(), "bg"
		});
		Color color = super.getCustomBG(index, column, table, mode);
		String label = MCConst.app.getString(bgKey);
		if (!isNull(label)) {
			color = MCResource.createColor(label);
		}
		return color;
	}

	@Override
	protected Color getCustomFG(int index, MCColumnConfig column, MCTable table,
			MCMode mode) {
		MCRootPanel rootPanel = table.getBaseRootPanel();
		String fgKey = MCConst.createKey(new String[] {
				rootPanel.getModuleID(), rootPanel.getScreenID(), column.getName(), "fg"
		});
		Color color = super.getCustomFG(index, column, table, mode);
		String label = MCConst.app.getString(fgKey);
		if (!isNull(label)) {
			color = MCResource.createColor(label);
		}
		return color;
	}

	public static void setCellConfig(MCTable<?> table) {
		MCRootPanel rootPanel = table.getBaseRootPanel();
		String fgKey = MCConst.createKey(new String[] {
				rootPanel.getModuleID(), rootPanel.getScreenID(), table.getName(), "fg"
		});
		String bgKey = MCConst.createKey(new String[] {
				rootPanel.getModuleID(), rootPanel.getScreenID(), table.getName(), "bg"
		});
		String bcKey = MCConst.createKey(new String[] {
				rootPanel.getModuleID(), rootPanel.getScreenID(), table.getName(), "bc"
		});

		StringBuilder sb = new StringBuilder();
		sb.append("<!--MCTable-->" + System.lineSeparator());
		sb.append("<" + fgKey + "></" + fgKey + ">" + System.lineSeparator());
		sb.append("<" + bgKey + "></" + bgKey + ">" + System.lineSeparator());
		sb.append("<" + bcKey + "></" + bcKey + ">" + System.lineSeparator());
		sb.append("<!--MCColumn-->" + System.lineSeparator());
		for (MCColumnConfig column : table.getColumnConfigs()) {
			String fgKeyC = MCConst.createKey(new String[] {
					rootPanel.getModuleID(), rootPanel.getScreenID(), column.getName(),
					"fg"
			});
			String bgKeyC = MCConst.createKey(new String[] {
					rootPanel.getModuleID(), rootPanel.getScreenID(), column.getName(),
					"bg"
			});
			String bcKeyC = MCConst.createKey(new String[] {
					rootPanel.getModuleID(), rootPanel.getScreenID(), column.getName(),
					"bc"
			});
			sb.append("<" + fgKeyC + "></" + fgKeyC + ">" + System.lineSeparator());
			sb.append("<" + bgKeyC + "></" + bgKeyC + ">" + System.lineSeparator());
			sb.append("<" + bcKeyC + "></" + bcKeyC + ">" + System.lineSeparator());
		}
		MCBeansUtil.log(table, mcframe.commonS.notice.S_Msg.SBP0001W, sb.toString());

		String label = MCConst.app.getString(fgKey);
		if (!isNull(label)) {
			Color color = MCResource.createColor(label);
			for (MCColumnConfig column : table.getColumnConfigs())
				column.setHeaderForeground(color);
		}
		label = MCConst.app.getString(bgKey);
		if (!isNull(label)) {
			Color color = MCResource.createColor(label);
			for (MCColumnConfig column : table.getColumnConfigs())
				column.setHeaderBackground(color);
		}
		label = MCConst.app.getString(bcKey);
		if (!isNull(label)) {
			Color color = MCResource.createColor(label);
			LineBorder redBorder = new LineBorder(color, 1, true);
			for (MCColumnConfig column : table.getColumnConfigs()) {
				column.setBorder(redBorder);
			}
		}
		//颜色取值以Table为单位,需要遍历所有部品的Table
		MCTable<?>[] partsTables = table.getPartsTables();
		for (MCTable<?> tbl : partsTables) {
			if (tbl.getCellConfig() instanceof MCCellConfig
					|| tbl.getCellConfig() instanceof XPP_CellConfig) {
				tbl.setCellConfig(new SXP_CellConfig());
			}
			else if (tbl.getCellConfig() instanceof SXP_CellConfig) {

			}
			else {
				throw new MCException(Core_Msg_FW_A.WP000061, new Object[] {
						tbl.getName()
				});
			}
			setCellConfig(tbl);
		}
	}
}

猜你喜欢

转载自blog.csdn.net/yunhaicaomei/article/details/83539160
今日推荐