📄 clntcomm.java
字号:
//Standard Componentsimport java.util.*;import java.io.*;//XML Componentsimport org.w3c.dom.*;import org.xml.sax.*;import javax.xml.parsers.*;import javax.xml.transform.*;import javax.xml.transform.dom.*;import javax.xml.transform.stream.*;//Swing Componentsimport javax.swing.*;import javax.swing.table.*;import javax.swing.event.*;/* * ClntComm.java * @version 1.0 * @author John T. Ellis * Created on May 19, 2000, 7:37 PM */public class ClntComm extends javax.swing.JPanel { private static long totalSeconds, billableSeconds; private static JFrame frame = new JFrame("Consultant Manager"); private TimerThread timer; private TimeRecordSet times; private java.awt.Dimension windowSize; private int index, selectedIndex; //Flags for initializing components private boolean showTotal = true; /** Creates new form TimeTrack */ public ClntComm() { readPrefs(); initComponents(); menuPanel.add(menuBar, java.awt.BorderLayout.NORTH); timer = new TimerThread(1000); timer.start(); try { timeList.setRowSelectionInterval(selectedIndex, selectedIndex); } catch (IllegalArgumentException e) { System.err.println("Row index invalid, not setting selection."); } } /** * Update the total time elapsed */ public void refreshTotalTime(){ if(showTotal) totalTime.setText(""+times.getTotalTimeString()); else totalTime.setText(""+times.getBillableTimeString()); totalTime.repaint(); } /** * Read through preferances file */ public void readPrefs() { File prefs = new File(CsltComm.prefsDir, "ClntComm.def"); times = new TimeRecordSet(); if (prefs.exists()) { try { DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder(); Document doc = docBuilder.parse(prefs); doc.getDocumentElement().normalize(); NodeList projects = doc.getElementsByTagName("project"); //Get all projects for(int i=0; i<projects.getLength(); i++){ Node project = projects.item(i); NamedNodeMap attributes = project.getAttributes(); Node nameNode = attributes.getNamedItem("name"); String name = nameNode.getNodeValue(); Node aliasNode = attributes.getNamedItem("alias"); String alias = null; if(aliasNode != null) alias = aliasNode.getNodeValue(); Node secondsNode = attributes.getNamedItem("seconds"); long seconds = Long.parseLong(secondsNode.getNodeValue()); Node billableNode = attributes.getNamedItem("billable"); boolean billable = true; if(billableNode.getNodeValue().equals("false")) billable = false; Node selectedNode = attributes.getNamedItem("selected"); if(selectedNode != null && selectedNode.getNodeValue().equals("true")) selectedIndex = i; TimeRecord record = new TimeRecord(name, alias, seconds, billable); times.add(record); } NamedNodeMap attributes = null; //Get window dimensions NodeList dimensions = doc.getElementsByTagName("dimensions"); Node dimension = dimensions.item(0); attributes = dimension.getAttributes(); double width = Double.parseDouble(attributes.getNamedItem("width").getNodeValue()); double height = Double.parseDouble(attributes.getNamedItem("height").getNodeValue()); windowSize = new java.awt.Dimension((int)width, (int)height); //Decide whether to show total time/billable time NodeList showTotalTimes = doc.getElementsByTagName("showtotaltime"); Node showTotalTime = showTotalTimes.item(0); attributes = showTotalTime.getAttributes(); if(attributes.getNamedItem("display").getNodeValue().equals("billable")) showTotal = false; } catch (SAXParseException e) { System.err.println("Error parsing prefs file, line "+e.getLineNumber()+": "+e.getMessage()); } catch (SAXException e) { System.err.println("Error reading prefs file: "+e); e.printStackTrace(System.out); } catch (Exception e) { System.err.println("Cannot read prefs file: "+e); e.printStackTrace(System.out); } } } public void savePrefs() { File prefs = new File(CsltComm.prefsDir, "ClntComm.def"); try { DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder(); Document doc = docBuilder.newDocument(); Element rootNode = doc.createElement("clntcomm"); rootNode.setAttribute("version", "2.0"); doc.appendChild(rootNode); //Save projects selectedIndex = timeList.getSelectedRow(); for(int i=0; i<times.size(); i++){ TimeRecord record = times.elementAt(i); Element newNode = doc.createElement("project"); newNode.setAttribute("name", record.projectName); if(record.alias != null) newNode.setAttribute("alias", record.alias); newNode.setAttribute("seconds", ""+record.seconds); newNode.setAttribute("billable", ""+record.billable); if(i == selectedIndex) newNode.setAttribute("selected", "true"); rootNode.appendChild(newNode); } Element newNode = null; //Save window dimensions java.awt.Dimension size = getSize(); newNode = doc.createElement("dimensions"); newNode.setAttribute("width", ""+size.getWidth()); newNode.setAttribute("height", ""+size.getHeight()); rootNode.appendChild(newNode); //Save show billable/total time flag newNode = doc.createElement("showtotaltime"); newNode.setAttribute("display", showTotal ? "total" : "billable"); rootNode.appendChild(newNode); //Write to file doc.getDocumentElement().normalize(); TransformerFactory fac = TransformerFactory.newInstance(); Transformer trans = fac.newTransformer(); trans.transform(new DOMSource(doc.getDocumentElement()), new StreamResult(prefs)); } catch (ParserConfigurationException e) { System.err.println("Error writing prefs file: "+e); } catch (Exception e) { System.err.println("Cannot write to prefs file: "+e); } } public boolean isRunning(){ return timer.clockRunning; } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the FormEditor. */ private void initComponents() {//GEN-BEGIN:initComponents menuBar = new javax.swing.JMenuBar(); projectMenu = new javax.swing.JMenu(); addMenuItem = new javax.swing.JMenuItem(); deleteMenuItem = new javax.swing.JMenuItem(); editMenuItem = new javax.swing.JMenuItem(); zeroMenuItem = new javax.swing.JMenuItem(); toolMenu = new javax.swing.JMenu(); dbexportMenuItem = new javax.swing.JMenuItem(); jdbcMenuItem = new javax.swing.JMenuItem(); helpMenuItem = new javax.swing.JMenuItem(); editMenu = new javax.swing.JPopupMenu(); editPopupItem = new javax.swing.JMenuItem(); deletePopupItem = new javax.swing.JMenuItem(); totalPanel = new javax.swing.JPanel(); totalText = new javax.swing.JLabel(); totalTime = new javax.swing.JLabel(); scrollPane = new javax.swing.JScrollPane(); timeList = new javax.swing.JTable(); menuPanel = new javax.swing.JPanel(); startButton = new javax.swing.JButton(); menuBar.setBorder(null); projectMenu.setText("Project"); addMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_A, java.awt.event.InputEvent.CTRL_MASK)); addMenuItem.setText("Add Project"); addMenuItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { newProject(evt); } }); projectMenu.add(addMenuItem); deleteMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_D, java.awt.event.InputEvent.CTRL_MASK)); deleteMenuItem.setText("Delete Project"); deleteMenuItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { deleteProject(evt); } }); projectMenu.add(deleteMenuItem); editMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_E, java.awt.event.InputEvent.CTRL_MASK)); editMenuItem.setText("Edit Project"); editMenuItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { editProject(evt); } }); projectMenu.add(editMenuItem); zeroMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_Z, java.awt.event.InputEvent.CTRL_MASK)); zeroMenuItem.setText("Reset Timers"); zeroMenuItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { zeroProject(evt); } }); projectMenu.add(zeroMenuItem); menuBar.add(projectMenu); toolMenu.setText("Tools"); dbexportMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_X, java.awt.event.InputEvent.CTRL_MASK)); dbexportMenuItem.setText("Export to Table"); dbexportMenuItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { exportToTable(evt); } }); toolMenu.add(dbexportMenuItem); jdbcMenuItem.setText("JDBC Settings"); jdbcMenuItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { editJDBC(evt); } }); toolMenu.add(jdbcMenuItem); helpMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F1, 0)); helpMenuItem.setText("Help"); helpMenuItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { showHelp(evt); } }); toolMenu.add(helpMenuItem); menuBar.add(toolMenu); editPopupItem.setText("Edit Project"); editPopupItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { editProject(evt); } }); editMenu.add(editPopupItem); deletePopupItem.setText("Delete Project"); deletePopupItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { deleteProject(evt); } }); editMenu.add(deletePopupItem); setLayout(new java.awt.BorderLayout()); setPreferredSize(windowSize); totalPanel.setLayout(new java.awt.GridLayout(1, 2)); totalText.setText(showTotal ? "Total:" : "Billable:"); totalText.setForeground(java.awt.Color.black); totalText.setHorizontalTextPosition(javax.swing.SwingConstants.LEFT); totalText.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { toggleTotals(evt); } }); totalPanel.add(totalText); totalTime.setText(showTotal ? times.getTotalTimeString() : times.getBillableTimeString()); totalTime.setForeground(java.awt.Color.black); totalTime.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT); totalTime.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { toggleTotals(evt); } }); totalPanel.add(totalTime); add(totalPanel, java.awt.BorderLayout.SOUTH); timeList.setModel(times.toTableModel()); timeList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); ListSelectionModel rowSM = timeList.getSelectionModel(); rowSM.addListSelectionListener(new ListSelectionListener() {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -