⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 clntcomm.java

📁 一个用Java实现的小型
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
//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 + -