JavaFX開發的開發常用工具集——清單管理工具、命令列加強工具及HTTP呼叫工具
在軟體開發過程中,經常會需要使用到一些工具,如清單管理、HTTP呼叫測試等,電腦上經常要裝一堆的軟體,而且這些軟體經常不是很滿足自己的使得習慣。作為一個開發人員,很自然的就想按自己的想法開發一些工具來供自己使用,因此這個工具集就因此而產生了,並且在使用過程中仍在不斷優化與增加。 目前包含了三個工具:一是定製化的清單管理工具;二是HTTP請求工具;三是Win命令列加強工具。全部都是使用JavaFX等開發;JDK最好是1.8或者1.9,如果是11由於JavaFX被拆出JDK需要新增特定的依賴包。
1. 概述
先來看下相應的介面:
1.1 清單管理工具:
上圖中的待辦事項 、我的待辦、招聘管理三個Tab就是定義的三個不同的清單管理工具;
這三個清單管理工具都是通過配置檔案自動生成的,可以在不進行任何編碼的情況下修改這些清單的欄位及其它的如排序、欄位編輯方式等屬性。
1.2 HTTP呼叫工具
介面如下: 可以訪問指定的路徑,指定請求的報文頭如Cookie資訊、指定請求引數,然後展示格式化後的返回資訊;
同時會展示請求耗時、返回資料大小等資訊,也可以複製原始的返回結果等。
每次請求都會儲存一個歷史請求,可以在需要的時候將之前呼叫的請求開啟進行重複呼叫。
1.3 加強的命令列呼叫工具
介面如下:
將編輯視窗和日誌視窗拆分開來,可以在編輯視窗中輸入多行命令,然後通過ctrl+enter批量執行命令;
也可以選擇部分命令後按ctrl+enter來執行選中的命令。
同時,支援按ctrl+s儲存當前命令視窗;也可以按ctrl+n建立新的視窗。
做這個工具的目的,主要是日常在使用git提交程式碼合併分支時,需要輸入很多重複的命令,每次基本都是一樣的一些命令。因此通過這個工具,就可以將這些命令儲存,在需要的時候批量執行即可。
2. 定製化的清單管理工具
顧名思義,清單管理工具實際上就是對某些清單進行管理的工具,如管理目前我自己或者團隊所收到的所有需求;如記錄各個環境的各種使用者名稱、密碼資料;又如記錄自己的一些待辦事項等。
清單面板可以在conf/config.xml中定義其入口 ,並可在專用的配置檔案中定義它需要展示的列以及其它的各項屬性。也就是說,如果要新增一個清單型別面板,只需要定義一個配置檔案來指定它的各個屬性;再在config.xml定義即可。不需要再進行任何的程式碼編寫。
先看下介面:
其中,待辦事項及我的待辦、招聘管理就是在config.xml中定義好的清單介面。
目前有新增清單、修改清單、查詢清單、匯出清單等功能;還可以通過配置檔案配置多個下拉型別的查詢條件,如上圖中的“未完成”下拉框就是通過配置檔案定義的。
通過在工具欄中的第一個輸入框中輸入相關資訊然後直接回車,就可以迅速的新增一個待辦事項。如果需要對其進行修改,直接雙擊要修改的單元格即會進入編輯模式進行修改,修改時也可以定製該單元格的編輯方式,如單選、下拉、文字等。介面如下:
配置檔案分成兩層,其中config.xml是整個應用程式的配置檔案,配置需要展示多少個清單,每個清單對應的配置檔名稱是什麼,其內容如下:
<app>
<panel title="待辦事項" configFile="todo" type="treeTable">
<search>
<select default="未完成">
<item name="所有"/>
<item name="未完成" key="step" value="!(已上線,完成)"/>
</select>
</search>
<rowFill>
<if key="step" value="已上線" ret="#c7c7c7"/>
<elif key="step" value="完成" ret="#c7c7c7"/>
<elif key="step" value="待上線" ret="#22B14C"/>
<elif key="step" value="測試中" ret="#B7910E"/>
<else ret="black"/>
</rowFill>
<comparator>
<order index="1" key="step" order="已上線,完成"/>
<order index="2" key="actualDate" orderBy="asc"/>
<order index="3" key="planDate" orderBy="desc"/>
</comparator>
<beforeSave>
<if key="step" value="已上線">
<if key="actualDate" value="empty">
<prop key="actualDate" value="nowDate"/>
</if>
</if>
<elif key="step" value="完成">
<if key="actualDate" value="empty">
<prop key="actualDate" value="nowDate"/>
</if>
</elif>
<else>
<prop key="actualDate" value="null"/>
</else>
</beforeSave>
<nodeExpand>
<if key="step" value="已上線,完成,待上線" ret="false"/>
<else ret="true"/>
</nodeExpand>
</panel>
<panel title="我的待辦" configFile="myTodo" display="true">
<rowFill>
<if key="status" value="true" ret="gray"/>
<else ret="black"/>
</rowFill>
<comparator>
<order index="1" key="status" value="false,true" orderBy="desc"/>
</comparator>
<beforeSave>
<if key="status" value="true">
<if key="actualDate" value="empty">
<prop key="actualDate" value="nowDate"/>
</if>
</if>
<else>
<prop key="actualDate" value="null"/>
</else>
</beforeSave>
</panel>
<panel title="招聘管理" configFile="employment">
<rowFill>
<if key="step" value="結束" ret="#c7c7c7"/>
<elif key="step" value="通過" ret="DARKGREEN"/>
<elif key="step" value="郵件溝通" ret="yellowgreen"/>
<else ret="black"/>
</rowFill>
<comparator>
<order index="1" key="step" value="通過,郵件溝通,結束" orderBy="desc"/>
<order index="2" key="actualDate" orderBy="asc"/>
<order index="3" key="addDate" orderBy="desc"/>
</comparator>
<beforeSave>
<if key="step" value="結束">
<if key="actualDate" value="empty">
<prop key="actualDate" value="nowDateTime"/>
</if>
</if>
<elif key="step" value="通過">
<if key="actualDate" value="empty">
<prop key="actualDate" value="nowDateTime"/>
</if>
</elif>
<else>
<prop key="actualDate" value="null"/>
</else>
</beforeSave>
</panel>
</app>
其中panel元素對應的就是某一個清單面板; 這個元素有以下屬性:
- title: 面板名稱,展示在最終的顯示介面上的Tab名稱;
- configFile: 配置檔名稱,如配置的是todo時,表示的配置檔案為:conf/todo.xml;
- type: 面板中的表格是樹型表格還是普通表格;預設是普通表格;當指定其值為treeTable時為樹形表格; 樹形表格與普通表格不一樣的地方就是樹形表格可以為某一行資料新增下一級資料;目前僅支援兩級;
每一個Panel元素可以包含以下子元素:
-
search: 可以指定附加的搜尋框,目前主要支援select下拉方式,通過key/value來指定當選擇某個選項時進行什麼樣的篩選。目前支援兩種型別的篩選:in與not in,如key=“item” value=“test,test1"表示篩選item值在指定範圍內的記錄;如果value=”!(…)"表示的是不在這個範圍內的記錄;
-
rowFill: 指定資料的字型顏色; 它可以 包含if/elif/else三個子元素,每個字元互包含有以下屬性:
- key: 指定欄位名稱;
- value: 欄位值
- ret: 欄位顏色值;
其表示的含義是:當key所指定的屬性的值與value一致時,其字型顏色將會是value。
-
comparator: 指定表格的排序規則; 通過指定其order子元素,可以指定按哪個屬性的哪些值進行排序,同時如果屬性一致時,按下一條規則排序;如:
<order index="1" key="step" value="通過,郵件溝通,結束" orderBy="desc"/> <order index="2" key="actualDate" orderBy="asc"/> <order index="3" key="addDate" orderBy="desc"/>
表示的是先按step指定的順序進行排序,如果兩個記錄按這個規則比較結果是相等的,那麼按下一條規則進行排序。
-
beforeSave: 在儲存前,給某些可能需要指定值的屬性指定特定的值;如儲存某條記錄前更新其更新時間。 可以通過if/elif/else來指定當某些值為指定值時給特定的值賦值。 目前賦值可以是nowDate/nowDateTime即其它; 其中nowDate表示值是當前日期;nowDateTime表示的是當前時間;其它情況時,指定的欄位直接被賦予該值。
接下來看下每個面板的配置:
<entity quickAdd="title">
<status type="checkbox" title="狀態">
<completed title="完成"/>
<unCompleted title="未完成"/>
</status>
<title type="text" title="標題"/>
<type type="select" default="other" title="分類">
<zp title="招聘"/>
<xq title="需求跟進"/>
<other title="其它"/>
</type>
<addDate type="date" title="增加時間" default="nowDate"/>
<planDate type="date" title="計劃時間" default="nowDate"/>
<actualDate type="date" title="完成時間"/>
<remark type="text" title="備註"/>
</entity>
這個就是定義面板展示的表格列。其中屬性quickAdd表示的是,當在工具欄快速增加框中輸入資訊並回車時,輸入的資訊被指定到哪個屬性中去。
每個屬性可以有四種類型:
- checkbox: 單選框;
- text: 文字
- select: 下拉框;
- date: 日期型別;
3. 其它
HTTP呼叫工具及CMD加強工具較為簡單,不再細述。
這個工具集是自己在日常工作中經常使用到的,因此會不斷的進行擴充與優化及改進。有興趣的可以關注下。或者有哪些建議也可以反饋改進。