網友評分: 9.6分
FlexGantt是一款非常先進的甘特圖用戶界面制作工具,不僅能夠幫助用戶修改與timeline相關的數據和渲染,還可以對整個構件的行為進行更改,有需要的朋友可以自行來下載。
分離屏/雙甘特圖:幾乎任何規劃和日程應用程序都需要的功能是使兩個不同的模型或同一個模型的兩個不同部分在保持同步的同時,進行水平滾動。 FlexGantt框架包含一個雙甘特圖,可實現上述功能。 用戶可在任何時候對甘特圖進行分隔/消除分隔。 可用一個水平分隔符來對上、下部分進行縮放。 Timeline對象可以從一個拖動到另一個。
書簽:用戶將越來越適應書簽的概念。 FlexGantt 支持書簽,而用戶可通過書簽來對timeline的設置進行快速調整,以便在甘特圖中顯示特定的時間點、粒度和水平線。 定義的書簽可在導航控件的功能選單中列出。 如果在用戶點擊功能選單按鈕時,如果控件的按鈕按下,則時間跨度書簽的預覽圖會顯示。
圖層:FlexGantt 采用了一個與圖形和映射應用程序相比非常獨特的分層途徑。 每個甘特圖都包含一套系統層,這些層可提供核心的功能(例如,繪制垂直網格線)和一套專對timeline對象(行為、時間、里程碑。。。)進行繪制的層。 下圖是對層疊的描述。 應用程序可以加入盡可能多的timeline對象層,允許它們對對象進行輕松分組,并一次顯示或隱藏。 層還支持透明度,從而可以輕松的識別重疊的timeline對象。
拖放網格 :Timeline 對象可以進行水平拖動和縮放,也可以垂直拖動。 在這些拖& 放操作過程中支持不可見的網格,以便在特定的時間對timeline對象的放置進行簡化。 網格受策略的控制,這就意味著任何種類的網格都可以運行。 默認的網格策略可在經過配置后,使timeline對象與任何單位聯系起來,從千年、世紀、十年、年、月、周、日直到毫秒。
受策略控制的行為:日程應用程序在很大程度上取決于信息的可視化、數據的編輯以及對用戶交互行為的響應方式。 FlexGantt的策略框架可用于根據這些變量對甘特圖進行定制。 策略是小型的決策工具,通常不含大量的代碼。 它們同時是無狀態的。 在許多情況下,它們只返回flag (布爾值)和命令。 flag可用于控制程序流,而命令用于進行數據的實際修改(通過一個具有撤銷和重復功能的命令堆棧)。
可插的渲染程序編輯器:Swing 可定義多個渲染程序和編輯器類,可用于其用戶界面構件,如樹、表或列表。 FlexGantt的功能與此相同,并可為樹形表單元格、列表頭、彈出功能選單、日期線模型、timeline對象、eventline對象定義渲染程序。 樹形表單元格和timeline對象具有編輯器。 timeline 對象編輯器可在甘特圖的右手測一個透明窗口中顯示(在位編輯,見下圖)
彈出功能選單/注釋:位于timeline下的條可以很好的表示一個新崗位,但由于空間的局限,只能承載有限的信息。 彈出功能選單/注釋可在鼠標在這樣條上移動時出現,這是一個很好的功能,可顯示豐富的附加信息,可供決策人在對日程作出決策之前進行參考。 FlexGanttd的彈出功能選單可以和Swing的構件相同的方式進行定制化。 不同的渲染程序可以封裝到不同類型的彈出對象中。 彈出對象受專門的彈出策略的影響。 下圖顯示的是默認的彈出渲染程序,可以系列化的形式顯示彈出對象。
打?。焊侍貓D中顯示的計劃是一個文檔,而每個文檔都必須是可打印的。 內建的對FlexGantt的打印支持可讓用戶指定打印的時間跨度和粒度 (見下圖)。 結果圖標可以以幾種不同的頁寬和頁高打印。
關系:Timeline對象通常彼此之間具有某種關系。 項目規劃軟件通常規定它們之間的限制。 這些限制的例子有: '之后開始', '之前結束', '同時開始', '同時結束'。 FlexGantt可通過在這些對象之間劃線來進行可視化。 每個應用程序都有自己的可視化方式(為不同的限制關系提供不同的顏色和/或線型)。 通過插入定制的關系生成器,可進行任何種類的關系生成。
延遲加載(Lazy loading):需要可視化的數據的兩可能會很大,這取決于應用程序的類型。 在這些情況下,只有在采用“延遲加載”的方法時,用戶界面才可能快速響應,這就是說,數據只有在用戶實際發出請求的情況下才會從服務器(或數據庫)中傳輸。 FlexGantt是從最底層開始設計的,支持延遲加載。 例如: 可實現樹形表展開監聽器界面的對象會在樹甚至還未展開之前就收到一個事件,以便將展開中的父節點的子節點載入?!?nbsp;分頁模型是另一個支持延遲加載的基礎結構的例子。
命令框架:FlexGantt 提供了一個雖小但強大的命令框架。該框架可用于對可以撤銷和重復的編輯功能提供支持。 該框架包括命令、一個命令堆棧、一個命令堆棧監聽器和一個進度監控?!?nbsp;命令可通過甘特圖運行、撤銷和重復,而甘特圖在內部采用了一個可更換的命令堆棧。 命令可在自己的線程內運行,以便保持用戶界面的響應性。 命令堆棧事件是在命令的執行過程中發出的。 進度監控程序可用于顯示命令的進度。 子進度監控程序用于由其他命令組成的組合命令?!?nbsp;一旦一個命令執行完畢,將會加入命令堆棧的不可執行命令列表。 當一個不可撤消的命令運行時,列表會清空。 命令框架是高度抽象化的,因而可對現有的基礎結構(遺留代碼)進行復用。
分頁:如果一個日程應用程序需要處理大量的timeline對象,通常將timeline的水平線分成幾頁/幾個時間跨度通常是有意義的。 這樣可將數據分成幾個較小的片段,便于甘特圖的處理。 分頁模塊可對各頁進行管理。 可查詢當前頁、前頁、下一頁、首頁和最后一頁。 用戶界面提供了一個控件,可用于選擇單獨的頁。
可變行高:FlexGantt圖的每一行都可以有自己的高度。 在樹形表的節點代表不同類型的對象或如果每個節點都與某個數量相關時,此功能非常有用。 在此情況下,行高可反映出數量的大小(例如某種資源的容量)。
多列排序:為與甘特圖的左手測的樹形表支持多列排序,即用戶可同時選擇幾個樹形表的列,而表中的數據會根據選擇的情況進行排序。 FlexGantt 采用了一種快速排序算法,支持升序和降序排序。
可定制的Timeline:每個應用程序都有各自關于timeline的要求。 有些要求在日期的旁邊顯示是當年的第幾周,其他的可能要求顯示是當年的第幾天(例如'第241天')。 timeline的設計宗旨考慮了靈活性。 其模型可以更換、其生成器可以被更換,甚至整個timeline都可以被定制的子類替換。
日歷模型 :日歷模型可為甘特圖提供與周末、假日或任何特殊的時間跨度相關的數據。 日歷模型的條目在整個層容器的高度內進行渲染(右手測)。 關于日歷模型的最明顯的例子是對視為周末的星期進行定義。 周末日的背景呈灰色。
自滾動:如果FlexGantt圖頻繁對其“當前時間/系統時間”進行更新,有時最好讓應用程序關注這一時間。 當允許自滾動時,當前時間光標(垂直的虛線)會保持在層容器的中心,即便在時間前進時也是如此。 在應用程序更多地強調監控功能,而不是交互進度功能時,這是一種非常有用的功能。