IDEA的StopCoding外掛,好用到爆

語言: CN / TW / HK

前言

當初年少懵懂,那年夏天填志願選專業,父母聽其他長輩說選擇計算機專業好。從那以後,我的身上就有了計院深深的烙印。從寢室到機房,從機房到圖書館,C、C++、Java、只要是想寫點自己感興趣的東西,一坐就是幾個小時,但那時年輕,起身,收拾,一路小跑會女神,輕輕鬆鬆。

現在工作了,毫無意外的做著開發的工作,長時間久坐。寫程式碼一忙起來就忘了起來活動一下,也不怎麼喝水。經常等到忙完了就感覺腰和腿不舒服。直到今年的體檢報告一下來,才幡然醒悟:沒有一個好身體,就不能好好打工,讓老闆過上他自己想要的生活了.

試過用手機提醒自己,但是沒用。小米手環的久坐提醒功能也開著,有時候寫程式碼正入神的,時間到了也就點一下就關了,還是沒什麼作用。所以我想究竟是我太賴了,還是用Idea寫程式碼容易沉迷,總之不可能是改需求有意思。

所以元旦節打算為自己開發一款小小的Idea防沉迷外掛,我叫她【StopCoding】。她應該可以設定每隔多少分鐘,就彈出一個提醒對話方塊,一旦對話方塊彈出來,idea的程式碼編輯框就自動失去了焦點,什麼都不能操作,到這還不算完,關鍵是這個對話方塊得關不了,並且還顯示著休息倒計時,還有即使我修改了系統時間,這個倒計時也依然有效,除非我開啟工作管理員,關閉Idea的程序,然後再重新啟動Idea。但是想一下想,idea都都關了,還是休息一下吧。

下面就介紹一下她簡單的使用教程和開發教程

安裝使用教程

安裝

1.在idea中直接搜尋安裝StopCoding外掛(官方已經稽核通過)

2 . 內網開發的小夥伴 可以下載之後進行本地安裝

https://github.com/jogeen/StopCoding/releases/tag/20210104-V1.0

  • 本地安裝:

使用

  • Step1. 然後在選單欄中tools->StopCoding

  • Step2. 設定適合你的引數然後儲存。

  • Step3. 然後快樂的Coding吧,再不用擔心自己會沉迷了。工作時間結束,她會彈出下框進行提醒,當然,這個框是關不掉的.只有你休息了足夠的時間它才會自動關閉.

開發教程

這個外掛非常的簡約,介面操作也很簡單。所使用的技術基本上都是java的基礎程式設計知識。所以小夥伴感興趣的話,一起看看吧。

技術範圍

  • 外掛工程的基本結構
  • Swing 主要負責兩個對話方塊的互動
  • Timer 作為最基本的定時器選擇

外掛工程結構

  • plugin.xml

這是外掛工程的核心配置檔案,裡面每一項的解釋,可以參考第一篇的介紹:

https://juejin.cn/post/6844904127990857742

  • data包
  • SettingData,配置資訊對應model
  • DataCenter,作為執行時的資料中心,都是些靜態的全域性變數
  • service
  • TimerService 這個定時計算的核心程式碼
  • task
  • RestTask 休息時的定時任務
  • WorkTask 工作時的定時任務
  • ui
  • SettingDialog 設定資訊的對話方塊
  • TipsDialog 休息時提醒的對話方塊
  • StopCodingSettingAction 啟動入口的action

Swing

其實在idea中開發Swing專案的介面非常簡單。因為idea提供了一系列視覺化的操作,以及控制元件佈局的拖拽。接下來就簡單的介紹一下對話方塊的建立過程和新增事件。

建立對話方塊

  • Step1

  • Step2

  • Step3

  • 注:這裡並沒有詳細的展開Swing的講解,因為介面的這個東西,需要大家多去自己實踐。這裡就不做手冊式的贅述了。

新增事件

其實,剛才建立的這個對話方塊裡的兩個按鈕都是預設已經建立好了點選事件的。

public class TestDialog extends JDialog {  
    private JPanel contentPane;  
    private JButton buttonOK;  
    private JButton buttonCancel;  
  
    public TestDialog() {  
        setContentPane(contentPane);  
        setModal(true);  
        getRootPane().setDefaultButton(buttonOK);  
  
        buttonOK.addActionListener(new ActionListener() {  
            public void actionPerformed(ActionEvent e) {  
                onOK();  
            }  
        }); //這是給OK按鈕繫結點選事件的監聽器  
  
        buttonCancel.addActionListener(new ActionListener() {  
            public void actionPerformed(ActionEvent e) {  
                onCancel();  
            }  
        });//這是給取消按鈕繫結點選事件的監聽器  
    //其他程式碼  
    }

當然我們也可以其它任何控制元件去建立不同的事件監聽器。這裡可以通過介面操作建立很多種監聽器,只要你需要,就可以使用。

  • step1

  • step2

Timer定時器

在這個外掛裡面,需要用到定時的功能,同時去計算公國和休息的時間。所以使用JDK自帶的Timer,非常的方便。下面我Timer的常用的api放在這裡,就清楚它的使用了。

  • 構造方法

  • 成員防範

  • 主要是schedule去新增一個定時任務,和使用cancel去取消任務停止定時器。

最後

相信有了這些基本介紹,感謝興趣的小夥伴想去看看原始碼和嘗試自己寫一個小外掛就沒什麼大問題了。不說了,我得休息了。希望這個外掛能幫到作為程式設計師得你,和這篇文章對你有一點點啟發。當然麻煩小夥伴點個贊,鼓勵一下打工人。