// Copyright (c) 2015 D1SM.net package com.pm.client.ui; import java.awt.Color; import java.awt.Component; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.util.EventObject; import javax.swing.JButton; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTable; import javax.swing.event.CellEditorListener; import javax.swing.table.TableCellEditor; import javax.swing.table.TableCellRenderer; import com.pm.PM; import com.pm.bean.MapRule; import com.pm.bean.MapServerBean; import com.pm.client.MapMonit; import sun.swing.DefaultLookup; import net.miginfocom.swing.MigLayout; public class MapRuleRender extends JLabel implements TableCellRenderer { private static final long serialVersionUID = -3260748459008436510L; JPanel pleft,pright,p1; JLabel label1; JLabel label_wan_address; MapRule rule; PMClientUI pui; private Color unselectedForeground; private Color unselectedBackground; { setOpaque(true); setLayout(new MigLayout("alignx left,aligny center,insets 0 10 0 0")); label1=new JLabel(); add(label1,"growx,width :1000:,height ::,wrap"); label1.setBackground(new Color(0f,0f,0f,0f)); label1.setOpaque(true); label_wan_address=new JLabel(); add(label_wan_address,"growx,width :1000:,height ::"); label_wan_address.setBackground(new Color(0f,0f,0f,0f)); label_wan_address.setOpaque(true); } MapRuleRender(PMClientUI pui){ this.pui=pui; } void update(MapRule rule,JTable table,int row){ this.rule=rule; StringBuffer sb1=new StringBuffer(); StringBuffer sb=new StringBuffer(); MapServerBean mp=rule.getMapserver(); //mp.setDomainName("mhbz.net"); int rowHeight=50; int type=rule.getType(); int h=table.getRowHeight(row); if(h!=rowHeight){ table.setRowHeight(row, rowHeight); } String name=rule.getName(); if(name==null){ name="无"; }else if(name.trim().equals("")){ name="无"; } // String status="离线"; MapMonit client=PMClientUI.get().getControlClient().getMapMonit(); if(client!=null){ if(client.isOnline()){ status="在线"; } } sb1.append("名称:"+name+" "); sb1.append("类型:"+rule.getTypeString()+" 状态:"+status); label1.setText(sb1.toString()); String wanAddress=rule.getWanAddress(); if(type==MapRule.type_single_port){ if(rule.getMapserver().getDomainName()==null){ wanAddress=pui.getConfig().getServerAddress()+":"+rule.getPort(); } } sb.append("外网地址:"+wanAddress+" 内网地址:"+rule.getLanAddress()+ (rule.getCustomAddress()!=null?(" 自定义地址:"+rule.getCustomAddress()):"")); label_wan_address.setText(sb.toString()); } @Override public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { Color fg = null; Color bg = null; JTable.DropLocation dropLocation = table.getDropLocation(); if (dropLocation != null && !dropLocation.isInsertRow() && !dropLocation.isInsertColumn() && dropLocation.getRow() == row && dropLocation.getColumn() == column) { fg = DefaultLookup.getColor(this, ui, "Table.dropCellForeground"); bg = DefaultLookup.getColor(this, ui, "Table.dropCellBackground"); isSelected = true; } if (isSelected) { setBackground(DefaultLookup.getColor(this, ui, "Table.dropCellBackground")); } else { setBackground( DefaultLookup.getColor(this, ui, "Table.alternateRowColor")); } MapRule rule=(MapRule)value; update(rule,table,row); return this; } }