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

📄 gmailer4j.java

📁 Gmail API for Java 一个gmail信箱的客户端
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
              logger.info("Selected Thread ID: " + thread.getThreadID());

              if (conn.isConnected()){
                // open the message if it is downloaded
                if ( storage.containsId("conv." + thread.getThreadID()) ){
                    // if threads existed in local storage, open it
                    Runnable r = new Runnable(){
                        public void run(){
                          try {
                            GMConversation resp = (GMConversation)storage.get("conv." + thread.getThreadID());
                            convCtrl.setConversation(resp);
                            convCtrl.setCurrentThreads(convCtrl.getConversation().getEntries().size() - 1);
                            convCtrl.scrollTop();
                            mainCtrl.setShowContent(true);
                            setMessage(null, "Local copy opened. ");
                          }
                          catch (IOException ex) {
                            Toolkit.getDefaultToolkit().beep();
                            setMessage(null, "Failed open message! " + ex.getCause());
                          }
                        }
                    };
                    try {
                        ThreadUtils.execute(r);
                    }
                    catch (InterruptedException ex) {
                        setMessage(null, "File not opened.");
                    }
                    mainCtrl.setShowContent(true);
                }else{
                    // otherwise download it
                    fetchConversation(thread.getThreadID(), 0);
                    mainCtrl.setShowContent(true);
                }
              }else{
                // if not connected, open local mailbox
                logger.info("Not connected, open mailbox ... ");
                Runnable r = new Runnable(){
                    public void run(){
                      try {
                        logger.info("Check if conversation downloaded :" + thread.getThreadID());
                        if ( storage.containsId("conv." + thread.getThreadID()) ){
                            logger.info("Opening conversaion: " + thread.getThreadID());
                            GMConversation resp = (GMConversation)storage.get("conv." + thread.getThreadID());
                            convCtrl.setConversation(resp);
                            convCtrl.setCurrentThreads(convCtrl.getConversation().getEntries().size() - 1);
                            convCtrl.scrollTop();
                            mainCtrl.setShowContent(true);
                            setMessage("Offline", "Local copy opened");
                            logger.info("Local copy opened");
                        }else{
                            Toolkit.getDefaultToolkit().beep();
                            setMessage("Offline", "Message not downloaded! Please logon to open mail.");
                        }
                      }
                      catch (IOException ex) {
                        Toolkit.getDefaultToolkit().beep();
                        setMessage("Offline", "Message not downloaded! Please logon to open mail.");
                      }
                    }
                  };
                  try {
                    ThreadUtils.execute(r);
                  }
                  catch (InterruptedException ex) {
                      setMessage("Offline", "File not opened.");
                  }
              }
            } else if (e.getClickCount() == 2 &&
                       e.getButton() == e.BUTTON1){
              // if it was left double click

            }
          }
        }

        /**
         * mouseEntered
         *
         * @param e MouseEvent
         */
        public void mouseEntered(java.awt.event.MouseEvent e) {
        }

        /**
         * mouseExited
         *
         * @param e MouseEvent
         */
        public void mouseExited(java.awt.event.MouseEvent e) {
        }

        /**
         * mousePressed
         *
         * @param e MouseEvent
         */
        public void mousePressed(java.awt.event.MouseEvent e) {
        }

        /**
         * mouseReleased
         *
         * @param e MouseEvent
         */
        public void mouseReleased(java.awt.event.MouseEvent e) {
        }

      };
      return l;
    }
    private ActionListener getActionListener(){
        ActionListener l = new ActionListener(){
          public void actionPerformed(ActionEvent e) {
              String cmd = e.getActionCommand().intern();
              logger.info("Action: " + cmd);
              if (cmd == "Refresh") {
                if (conn.isConnected()) {
                  String selectedBox = threadsModel.getMailboxName();

                  if (selectedBox == null) return;

                  // if selected mailbox is NOT a "search" entry
                  if (!selectedBox.startsWith("Search-")){
                    fetchBox(selectedBox, 0);
                  }else {
                    mainCtrl.setSearchString(selectedBox.substring(7, selectedBox.length()));
                    searchMessage();
                  }
                }

                /* Change UI flow
                  if (mainCtrl.getLayout() == 0){
                      mainCtrl.setLayout(1);
                  }else{
                      mainCtrl.setLayout(0);
                  } */
              } else if (cmd == "Close View"){
                  mainCtrl.setShowContent(false);
              } else if (cmd == "Exit") {
                  shutdown();
              } else if (cmd == "About"){
                // open about optionDialog
                if (!aboutDlg.isVisible()) {
                  aboutDlg.pack();
                  JFrame frame = mainCtrl.getFrame();
                  Dimension dlgSize = aboutDlg.getPreferredSize();
                  Dimension frmSize = frame.getSize();
                  Point loc = frame.getLocation();
                  aboutDlg.setLocation( (frmSize.width - dlgSize.width) / 2 + loc.x,
                                  (frmSize.height - dlgSize.height) / 2 + loc.y);
                  aboutDlg.show();
                  aboutDlg.toFront();
                }
                else {
                  aboutDlg.toFront();
                }
              }else if (cmd == "Option"){
                configOption.openDialog();
              }else if (cmd == "Mailbox"){
                // mailbox of the tree is clicked
                mailboxModel.setCurrentRoot(0);
                mainCtrl.expandTree();

              }else if (cmd == "Label"){
                // Label of the tree is clicked
                mailboxModel.setCurrentRoot(1);
                mainCtrl.expandTree();

              }else if (cmd == "Search Results"){
                // Search Results of the tree is clicked
                mailboxModel.setCurrentRoot(2);
                mainCtrl.expandTree();
              }else if (cmd == "Login") {
                  connect();
              }else if (cmd == "Logout") {
                  disconnect();
              }else if (cmd == "LAF Apply"){
                  // Apply Look and Feel
                  // setting up LAF must do outside
                  updateLAF();
              }else if (cmd == "Option OK"){
                  // pressed OK in option
                  // it already do something, but settingup LAD must do outside
                  updateLAF();
              }else if (cmd == "Console"){
                  mainCtrl.showConsole();
              }else if (cmd == "Search Message"){
                  searchMessage();
              }
          }
        };

        return l;
    }

    /**
     * Use the search string in search panel text field to search on gmail
     * Calling this function spawn a separate thread to do the job
     */
    //{{{ Search Message
    public void searchMessage(){
      // open a swing worker to ...
      SwingWorker searcher = new SwingWorker() {
        protected Object construct() {
          GMResponse resp = null;
          // 1. Disable the search box, show "searching" msg
          mainCtrl.setSearchEnabled(false);
          gmsearch.put(mainCtrl.getSearchString(), new Integer(0));
          mainCtrl.setSelectedMailboxButton(2);
          mailboxModel.updateSearches(gmsearch);
          mailboxModel.setCurrentRoot(MailboxTreeModel.LIST_SEARCH);
          mainCtrl.expandTree();

          // 2. Start the search
          try{
              logger.info("Start searching \"" + mainCtrl.getSearchString() + "\"");
              setMessage("Searching ...", "Start searching \"" + mainCtrl.getSearchString() + "\"");
              resp = conn.request(GMConstants.GM_REQ_QUERY, mainCtrl.getSearchString(), "0");
          }catch(IOException ioe){
              logger.info("Connot connect to server! " + ioe.getMessage());
          }catch(ParsePacketException ppe){
              logger.info("Error while parsing search message! " + ppe.getMessage());
          }

          return resp;
        }

        protected void finished() {
          // 3. wait until search result return
          // 4. enable the search box
          GMResponse returnedResp = null;
          mainCtrl.setSearchEnabled(true);

          try{
              returnedResp = (GMResponse) get();

              if (returnedResp != null){
                  // 5. add results to "Search"
                  logger.info("Searched Result: returnedResp: " +  returnedResp);
                  gmsearch.put(mainCtrl.getSearchString(), new Integer(returnedResp.getGMThreads().size()));
                  mailboxModel.updateSearches(gmsearch);
                  mailboxModel.setCurrentRoot(MailboxTreeModel.LIST_SEARCH);

                  mainCtrl.expandTree();

                  mailboxes.put("Search-" + mainCtrl.getSearchString(),
                                returnedResp.getGMThreads());
                  threadsModel.setMessageThreads("Search-" + mainCtrl.getSearchString(),
                                                 returnedResp.getGMThreads());
                  setMessage("Online", "Search completed, " + returnedResp.getGMThreads().size() + " found.");

                  try{
                      storage.put("search", gmsearch);
                  }catch(IOException ioe){
                      logger.warning("Error saving searches ... " + ioe);
                  }
              }else{
                  setMessage("Online", "Search failed");
              }

          }catch(InterruptedException ie){
              // 6. notify search failure
              logger.warning("Download message failed");
              setMessage("Online", "Search interrupted. ");
          }catch(java.lang.reflect.InvocationTargetException ite){
              // 6. notify search failure
              logger.warning("Download message failed");
              setMessage("Online", "Search failed: " + ite.getCause());
          }catch(RuntimeException cce){
              logger.warning("RuntimeException during download.");
              setMessage("Online", "Search failed: " + cce);
          }
        }
      };
      searcher.start();
    }
    //}}}

    private void updateLAF(){
      String lookandfeel = configOption.getSelectedLookAndFeelClassName();
      String theme = configOption.getSelectedThemeClassName();

      if (lookandfeel == null){
        logger.info("No look and feel selected");
        return;
      }

      if (lookandfeel.equals(UIManager.getLookAndFeel().getClass().getName()) &&
          theme == null){
        logger.info("Same look and feel selected, no change needed: " + lookandfeel + " <-> " + UIManager.getLookAndFeel().getClass().getName());
        return;
      }

      try{
        LookAndFeel selectedLaf = (LookAndFeel) Class.forName(lookandfeel).
            newInstance();
        if (selectedLaf instanceof PlasticLookAndFeel) {
          PlasticLookAndFeel.setMyCurrentTheme(settings.getSelectedTheme());
          PlasticLookAndFeel.setTabStyle(settings.getPlasticTabStyle());
          PlasticLookAndFeel.setHighContrastFocusColorsEnabled(
              settings.isPlasticHighContrastFocusEnabled());
        }
        else if (selectedLaf.getClass() == MetalLookAndFeel.class) {
          MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme());
        }
      }catch(Exception e){}

      configOption.applyLAF();
      SwingUtilities.updateComponentTreeUI(aboutDlg);
      mainCtrl.updateComponentTreeUI();
      configOption.updateComponentTreeUI();
    }


    public static void main(String[] args) {
        GMailer4j main = new GMailer4j();
    }

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -