package com.lgnortel.network.networkview;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowEvent;
import java.util.Enumeration;
import java.util.Vector;
import java.util.logging.Logger;
import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.ListSelectionModel;
import javax.swing.SwingConstants;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.TableColumn;
import com.lgnortel.lib.logger.LoggerUtil;
import com.lgnortel.lib.print.Preview;
import com.lgnortel.lib.print.PrintUtilities;
import com.lgnortel.lib.table.CommonTableModel;
import com.lgnortel.lib.table.HeaderButtonRenderer;
import com.lgnortel.lib.table.SortFilterModel;
import com.lgnortel.lib.view.EmsSwingSet;
import com.lgnortel.platform.db.DBDataDesc;
import com.lgnortel.platform.db.DBManager;
import com.lgnortel.platform.model.LabelMenuMgr;
import com.lgnortel.platform.model.NetworkElement;
import com.lgnortel.platform.model.NetworkMgr;
import com.lgnortel.r3.r3equipment.r3shelf.ShelfViewController;
import com.lgnortel.r4.r4equipment.common.R4ApplyButton;
import com.lgnortel.r4.r4equipment.common.R4HelpButton;
import com.lgnortel.r4.r4equipment.common.R4PrintButton;
import com.lgnortel.r4.r4equipment.common.R4ViewButton;
import com.lgnortel.rmi.common.ClientManager;
import com.lgnortel.rmi.common.CommonIF;
import com.lgnortel.rmi.common.EmsCode;
/**
* Copyright (c) 2008 LG-Nortel, Inc. All Rights Reserved.
*
* CONFIDENTIALITY AND LIMITED USE: This software, including any software of <br>
* third parties embodied herein, contains code, information, data and concepts <br>
* which are confidential and/or proprietary to LG-Nortel and such third <br>
* parties. This software is licensed for use solely in accordance with the <br>
* terms and conditions of the applicable license agreement with LG-Nortel or <br>
* its authorized distributor, and not for any other use or purpose. No <br>
* redistribution of this software by any party is permitted. <br>
*
* Title: CommonTableCellRenderer.java<br>
* Description: <br>
* Copyright: Copyright(c) 2008 LG-NORTEL ALL Rights Reserved<br>
* Company: LG-Nortel<br>
*
* Title: NodeMoveView.java<br>
* Description: <br>
* Copyright: Copyright(c) 2008 LG-NORTEL ALL Rights Reserved<br>
* Company: LG-Nortel<br>
*
* @author JungGu Lee
* @version 0.1
* @created 2009. 1. 21.
* @modified 2009. 1. 21.
* @product EFA R4.0 EMS
* @sw_block
*/
public class NodeMoveView extends JPanel {
/**
*
*/
private static final long serialVersionUID = 1L;
// Log4J
private Logger logger = LoggerUtil.getInstance().getLogger(this.getClass().getName());
private JPanel pnlMain = null;
private JPanel pnlNe = null;
private JRadioButton rbnNe = null;
private JRadioButton rbnSubnet = null;
private JComboBox cbSubnet = null;
private ButtonGroup grpNe = null;
private JButton btnGet = null;
private JButton btnSet = null;
private JButton btnPrint = null;
private JButton btnClose = null;
private JButton btnHelp = null;
// table
private JScrollPane spnNe = null;
private JTable tblNe = new JTable();
private SortFilterModel modelNe = null;
HelpView helpView = null;
int viewId;
LabelMenuMgr labelMenuMgr;
NetworkMgr networkMgr;
/**
* Constructor of this class
*/
public NodeMoveView(int _viewId) {
viewId = _viewId;
try {
labelMenuMgr = LabelMenuMgr.getInstance();
networkMgr = NetworkMgr.getInstance();
jbInit();
getSubnetList();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* nothing to do.
*/
public void refresh() {
}
/**
* set ViewId
*
* @param lViewId
*/
public void setViewId(int lViewId) {
this.viewId = lViewId;
}
/**
* get ViewId
*
* @return
*/
public int getViewId() {
return viewId;
}
/**
* Initialization of GUI Component
*
* @throws Exception
*/
private void jbInit() throws Exception {
rbnNe = new JRadioButton("ALL NODE", true);
rbnSubnet = new JRadioButton("SUBNET");
cbSubnet = new JComboBox();
cbSubnet.setEditable(false);
grpNe = new ButtonGroup();
grpNe.add(rbnNe);
grpNe.add(rbnSubnet);
btnSet = new R4ApplyButton();
btnSet.addActionListener(eventHandler);
btnGet = new R4ViewButton();
btnGet.addActionListener(eventHandler);
User user = User.getInstance();
if (user.getUserGrp() == DBDataDesc.USER_MAINTENANCE || user.getUserGrp() == DBDataDesc.USER_MONITOR) {
btnSet.setEnabled(false);
}
btnPrint = new R4PrintButton();
btnPrint.addActionListener(eventHandler);
btnClose = new JButton(labelMenuMgr.getLabel("CLOSE"));
btnClose.setFont(new java.awt.Font("Dialog", 0, 12));
btnClose.setPreferredSize(new Dimension(80, 25));
btnClose.setMinimumSize(new Dimension(80, 25));
btnClose.setMaximumSize(new Dimension(80, 25));
btnClose.addActionListener(eventHandler);
btnHelp = new R4HelpButton();
btnHelp.addActionListener(eventHandler);
spnNe = new JScrollPane();
init_tblNe();
spnNe.setViewportView(tblNe);
pnlNe = new JPanel();
pnlNe.setLayout(new GridBagLayout());
pnlNe.setBorder(EmsSwingSet.createMatteBorder("NE Choice"));
pnlNe.add(btnGet, new GridBagConstraints(1, 1, 1, 1, 7.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(1, 1, 1, 1), 0, 0));
pnlMain = new JPanel();
pnlMain.setLayout(new GridBagLayout());
pnlMain.setBorder(EmsSwingSet.createMatteBorder(labelMenuMgr.getLabel("RESULT")));
pnlMain.add(spnNe, new GridBagConstraints(1, 1, 4, 1, 1.0, 1.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(1, 1, 1, 1), 0, 0));
pnlMain.add(btnSet, new GridBagConstraints(1, 2, 1, 1, 1.0, 0.0, GridBagConstraints.EAST, GridBagConstraints.NONE, new Insets(1, 1, 1, 1), 0, 0));
pnlMain.add(btnPrint, new GridBagConstraints(2, 2, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(1, 1, 1, 1), 0, 0));
pnlMain.add(btnHelp, new GridBagConstraints(4, 2, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(1, 1, 1, 1), 0, 0));
this.setLayout(new GridBagLayout());
this.add(pnlNe, new GridBagConstraints(2, 1, 1, 1, 0.3, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(1, 1, 1, 1), 0, 0));
this.add(pnlMain, new GridBagConstraints(1, 2, 2, 1, 1.0, 1.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(1, 1, 1, 1), 0, 0));
initialize();
}
/**
* Initialization of Table set the title and renderer on the cell
*/
public void init_tblNe() {
Vector<Object> columnInfo = new Vector<Object>();
columnInfo.addElement(labelMenuMgr.getLabel("COMMAND_CHOICE"));
columnInfo.addElement(labelMenuMgr.getLabel("TID"));
columnInfo.addElement(labelMenuMgr.getLabel("X"));
columnInfo.addElement(labelMenuMgr.getLabel("Y"));
columnInfo.addElement(labelMenuMgr.getLabel("RESULT"));
CommonTableModel commonTableModel = new CommonTableModel(columnInfo);
modelNe = new SortFilterModel(commonTableModel);
HeaderButtonRenderer headerButtonRenderer = new HeaderButtonRenderer();
headerButtonRenderer.setFont(new java.awt.Font("Dialog", 0, 12));
modelNe.addMouseListener(tblNe, headerButtonRenderer);
modelNe.setCellEditable(0);
tblNe.setModel(modelNe);
tblNe.setBackground(Color.white);
tblNe.setSelectionBackground(new Color(204, 204, 255));
tblNe.addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent e) {
if (e.getClickCount() == 1) {
int s = getSelectNe();
setNeDetailInfo(s);
}
if (e.getModifiers() == MouseEvent.BUTTON3_MASK) {
}
};
});
tblNe.addKeyListener(new KeyAdapter() {
public void keyReleased(KeyEvent ek) {
if (ek.getKeyCode() == KeyEvent.VK_UP || ek.getKeyCode() == KeyEvent.VK_DOWN || ek.getKeyCode() == KeyEvent.VK_KP_UP || ek.getKeyCode() == KeyEvent.VK_KP_DOWN || ek.getKeyCode() == KeyEvent.VK_PAGE_UP || ek.getKeyCode() == KeyEvent.VK_PAGE_DOWN) {
int s = getSelectNe();
setNeDetailInfo(s);
}
};
});
DefaultTableCellRenderer renderer_center = new DefaultTableCellRenderer();
renderer_center.setHorizontalAlignment(SwingConstants.CENTER);
DefaultTableCellRenderer renderer_left = new DefaultTableCellRenderer();
renderer_left.setHorizontalAlignment(SwingConstants.LEFT);
int columnSize = modelNe.getColumnCount();
for (int i = 0; i < columnSize; i++) {
TableColumn tableColumn = tblNe.getColumnModel().getColumn(i);
tableColumn.setHeaderRenderer(headerButtonRenderer);
tableColumn.setCellRenderer(renderer_center);
if (i == 0) {
CheckCellRecoveryRenderer checkCell = new CheckCellRecoveryRenderer();
checkCell.setHorizontalAlignment(SwingConstants.CENTER);
tableColumn.setCellRenderer(checkCell);
tableColumn.setPreferredWidth(100);
} else if (i == 1) {
tableColumn.setPreferredWidth(100);
} else if (i == 2) {
tableColumn.setPreferredWidth(100);
} else if (i == 3) {
tableColumn.setPreferredWidth(100);
} else {
tableColumn.setPreferredWidth(280);
}
}
tblNe.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);
}
/**
* get subnet list
*/
private void getSubnetList() {
Enumeration<NetworkElement> e = networkMgr.getSubnet().elements();
while (e.hasMoreElements()) {
NetworkElement subnet = (NetworkElement) e.nextElement();
cbSubnet.addItem(subnet.getNodeName());
}
}
/**
* command response from server
*
* @param viewId
* @param userId
* @param nodeId
* @param cmdCode
* @param data
* @param result
* @return
*/
public boolean cmdResponse(int viewId, int userId, int nodeId, int cmdCode, Object[] data, int result) {
DBManager dbMgr = DBManager.getInstance();
String nodeName = dbMgr.getNodeName(nodeId);
if (nodeName != null) {
refreshPanel(nodeName, result);
} else {
logger.warning("nodeName is null");
}
return true;
}
/**
* refresh panel
*
* @param rspNodeName
* @param result
*/
public void refreshPanel(String rspNodeName, int result) {
if (rspNodeName == null)
return;
for (int rowCount = 0; rowCount < modelNe.getRowCount(); rowCount++) {
String nodeName = (String) modelNe.getValueAt(rowCount, 1);
if (rspNodeName.equals(nodeName)) {
int colCount = 4; // result column
modelNe.setValueAt((Object) ErrorInspect.getErrorMessage(result), rowCount, colCount);
modelNe.fireTableDataChanged();
if (result == ErrorInspect.SUCCESS) {
NetworkElement currentNode = networkMgr.getNodeNetworkElement(nodeName);
currentNode.setMovedNode(false);
}
}
}
}
/**
* get select row
*
* @return
*/
public int getSelectNe() {
int nNeRow = tblNe.getSelectedRow();
return nNeRow;
}
/**
* set provision data using retrieve data
*
* @param c
*/
public void setNeDetailInfo(int ne) {
if (ne < 0) {
return;
}
}
/**
* event handler action with event occurred location.
*/
IvjEventHandler eventHandler = new IvjEventHandler();
class IvjEventHandler implements java.awt.event.ActionListener {
public void actionPerformed(ActionEvent e) {
java.lang.Object src = e.getSource();
if (src == btnSet) {
requestCommand();
}
if (src == btnPrint) {
new Preview(new PrintUtilities(tblNe), "NODE_MOVE_RESULT");
} else if (src == btnClose) {
close();
} else if (src == btnHelp) {
help();
} else if (src == btnGet) {
refreshMovedNe();
}
}
}
/**
* when window closing event is occured call the close operation to dispose
*/
protected void processWindowEvent(WindowEvent e) {
if (e.getID() == WindowEvent.WINDOW_CLOSING) {
close();
}
}
/**
* window size & title initialization
*/
private void initialize() {
try {
setLocation(0, 0);
} catch (java.lang.Throwable ivjExc) {
handleException(ivjExc);
}
}
/**
* refresh moved data
*/
public void refreshMovedNe() {
btnGet.setEnabled(false);
Vector<Vector<Object>> _vMovedNeData = new Vector<Vector<Object>>();
modelNe.setData(_vMovedNeData);
modelNe.fireTableDataChanged();
NetworkMgr networkMgr = NetworkMgr.getInstance();
NetworkElement[] movedElement = networkMgr.getMovedNetworkElement();
if (movedElement == null) {
Object[] options = new Object[1];
options[0] = new String(labelMenuMgr.getLabel("CONFIRM"));
JOptionPane.showOptionDialog(this, "NO NODE TO MOVE", "CMD_MOVE_NODE", JOptionPane.OK_OPTION, JOptionPane.ERROR_MESSAGE, null, options, options[0]);
} else {
Vector<Vector<Object>> vMovedNeData = new Vector<Vector<Object>>();
for (int i = 0; i < movedElement.length; i++) {
Vector<Object> oneRow = new Vector<Object>();
oneRow.addElement(new Boolean(true)); // 0
oneRow.addElement(new String(movedElement[i].getNodeName())); // 1
Integer xLocation = new Integer(movedElement[i].getX());
oneRow.addElement(new String(xLocation.toString())); // 2
Integer yLocation = new Integer(movedElement[i].getY());
oneRow.addElement(new String(yLocation.toString())); // 3
oneRow.addElement(new String("")); // 4
oneRow.addElement(new Integer(movedElement[i].getNodeId())); // 5
vMovedNeData.addElement(oneRow);
}
modelNe.setData(vMovedNeData);
modelNe.fireTableDataChanged();
}
btnGet.setEnabled(true);
}
/**
* command request to setting the data
*/
private void requestCommand() {
ClientManager clientMgr = ClientManager.getInstance();
User user = User.getInstance();
for (int rowCnt = 0; rowCnt < modelNe.getRowCount(); rowCnt++) {
Boolean checked = (Boolean) modelNe.getValueAt(rowCnt, 0);
//String nodeName = (String) modelNe.getValueAt(rowCnt, 1);
String xLocation = (String) modelNe.getValueAt(rowCnt, 2);
String yLocation = (String) modelNe.getValueAt(rowCnt, 3);
int nodeId = ((Integer)modelNe.getValueAt(rowCnt,5)).intValue();
if (checked.booleanValue()) {
NetworkElement networkElement = networkMgr.getNodeNetworkElement(nodeId);
CommonIF.NodeIF[] data = new CommonIF.NodeIF[1];
data[0] = new CommonIF.NodeIF();
data[0].nodeName = networkElement.getNodeName();
data[0].nodeId = networkElement.getNodeId();
data[0].nodeType = networkElement.getNodeType();
data[0].xStart = Integer.parseInt(xLocation);
data[0].yStart = Integer.parseInt(yLocation);
data[0].eastNodeId = 0;
data[0].westNodeId = 0;
data[0].hubNodeId = 0;
data[0].parentNodeId = networkElement.getParentNodeId();
data[0].systemType = networkElement.getSystemType();
data[0].oprMode = 0;
data[0].address = networkElement.getAddress();
data[0].tcpIpSelected = networkElement.getTcpIpSelected();
data[0].gateway = networkElement.getGateway();
data[0].map = networkElement.getMap();
data[0].description = networkElement.getDescription();
String cmdStr = new String("");
cmdStr = "MOD-NE:" + data[0].nodeName + ":" + "X=" + data[0].xStart + "Y=" + data[0].yStart;
int shelfId = 0;
clientMgr.cmdRequest(getViewId(), user.getUserId(), data[0].nodeId, shelfId, EmsCode.CMD_MOVE_NODE, data, cmdStr);
} else {
logger.warning(" not checked nodeId = " + nodeId);
}
}
}
/**
* nothing to do..
*/
private void close() {
/*
* MainMenuBar mainMenuBar = MainMenuBar.getInstance(); mainMenuBar.removeCommand(viewId); dispose();
*/
}
private void handleException(java.lang.Throwable exception) {
System.out.println("--------------------- Exception ---------------------");
}
/**
* Help View dialogue is opened which is related to help dialog number
*/
private void help() {
helpView = HelpView.getInstance(ShelfViewController.DIALOG_HELP_NODELOCATION);
helpView.setVisible(true);
}
}
|