Beans Development Kit (BDK)分析(四) (轉)

amyz發表於2007-08-15
Beans Development Kit (BDK)分析(四) (轉)[@more@] 

設計皮膚

  主要介紹BeanBoxFrame提供的主要方法和功能。因為BeanBoxFrame是用了單態,所以使用了大量的靜態成員變數和靜態成員。這樣的好處在於不需要透過傳遞引用來影BeanBoxFrame的功能,而直接透過靜態方法來,避免複雜呼叫中引用傳遞的錯誤。

private boolean inBeanBox(Component c)用於判斷一個Bean例項是否在BeanBox中:namespace prefix = o ns = "urn:schemas--com::office" />

public void actionPerformed(ActionEvent evt)操作選單事件

public void propertyChange( PropertyChangeEvent evt)處理屬性變化中的designMode變化事件

static void setCurrentComponent(Component focus)設定當前的

public void run()內部執行緒,用於處理焦點Bean的變化

private void doSetCurrentFocus(Component focus) 設定當前的焦點Bean

public void setCustomizer(Customizer c)設定元件的屬性

public void layoutContainer(Container parent)容器的層管理器

對於ToolBox, TopBox, TopWrapperset/get方法

接著介紹BeanBox,在BDK中,這個作為設計的容器。允許所有的Bean能夠在BeanBox中視覺化的操縱,可以直接使用相關聯的屬性瀏覽器進行屬性的瀏覽和修改。

public Wrapper getTopWrapper()獲取頂層Wrapper也就使BeanBox

public synchronized void updateMenuBar(MenuBar bar)根據當前的BeanBox和Bean設定選單條

private void addMenuItem(BeanBoxFrame frame, Menu m, MenuItem mi)新增選單項

private synchronized String serFileName( o)為化指定建立標示符

private void serializeComponent()序列化元件到指定的,實現“serializeComponent”的選單項

private void makeApplet()實現“makeApplet”的選單項

private void load()實現“load”的選單項

private void writeObject(.io.ObjectOutputStream oos) 用於支援序列化

private void readObject(java.io.ObjectInputStream ois)用於支援序列化

private void print()用於支援BeanBox內容的列印

private void loadJar()實現“loadJar”的選單項

private void cut()支援剪貼簿的cut操作

private boolean copy()支援剪貼簿的copy操作

private void paste()支援剪貼簿的paste操作

private synchronized Wrapper getConnection(Wrapper Wrapper)實現兩個Bean的聯絡

void doEventHookup(ActionEvent evt)從源到目標建立一個事件聯絡

private Rectangle getLocalCoordinates(Component c)獲取BeanBox中Bean的位置

public void mousePressed(MouseEvent evt)支援滑鼠選中事件

public void mouseReleased(MouseEvent evt)支援滑鼠釋放事件

public synchronized void mouseDragged(MouseEvent evt)支援滑鼠拖動

public synchronized void mouseMoved(MouseEvent evt)支援滑鼠移動

void enuItem(ActionEvent evt)該方法被menuWorkerThread來呼叫處理相應的選單事件

public void doInsert該方法用於插入一個Bean例項到BeanBox中

public synchronized void queueMenuItem(ActionEvent evt)用於在處理選單的執行緒中排程選單項同步的執行

public void run()幫助最小化AWT事件執行緒的任務,防止死鎖

void startMove(Wrapper child, int x, int y)設定開始移動的位置

l  Rectangle getMoveBox(int mx, int my)繪製移動的Bean

void finishMove(int mx, int my)設定停止移動的位置

void startResize(Wrapper child, int x, int y, Cursor cursor)設定大小的改變

l  Rectangle getResizeBox(int mx, int my)獲取在改變大小的Bean

void finishResize(int mx, int my)完成大小的變化

void resetViewMenu()設定選單顯示的狀態

工具欄

  ToolBox繼承了Frame類,其主要實現是透過ToolBoxPanel來完成具體的功能。

void addWithUniqueName(Vector v, String s)

synchronized void adeansInJar(String jarFile)從Jar檔案載入Bean加入到工具欄中

synchronized void addBeanClass(String beanClassName)用於登記BeanBox

public Dimension getPreferredSize()獲取最佳大小

public void paint(Graphics g)重新繪製顯示

public void run()使用一個內部執行緒來處理Bean插入到工具欄

public Vector getLoadedJarInfo()獲取載入Jar檔案的資訊

private static Vector getJarNames()獲取要載入的Jar檔名

實現MouseListener介面的方法

屬性瀏覽器

  PropertySheet繼承了Frame類,其主要實現是透過PropertySheetPanel來完成。

synchronized void setTarget(Wrapper targ)設定要瀏覽的Bean

void stretch()用於視窗調整時呼叫

private void doLayout(boolean doSetSize)調整介面的位置

synchronized void setCustomizer(Customizer c)設定要屬性的Customizer

synchronized void wasModified(PropertyChangeEvent evt)執行屬性的修改和相關操作(是關鍵的方法)

工具類

  為了輔助BDK的功能實現,設計了豐富的工具類,我們將用新的一章來介紹。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752019/viewspace-958463/,如需轉載,請註明出處,否則將追究法律責任。

相關文章