小哈兒的 學習日記

          像瘋子一樣去戰斗!
          posts - 13, comments - 0, trackbacks - 0, articles - 0

          2007年4月23日

              今天調試一個bug,迷惑了很久。最后發現是關于首選項取值存值問題。
             這里ps為IPreferenceStore對象.

             ps.getString(XXX_KEY)是首選查找首選項 ,如果取出的值為空,如果有default值的話則執行ps.getDefault(XXX_KEY)。

             ps.setValue(XXX_KEY, "XXX")時首先和default中的XXX_KEY比較,如果不同的話才put進去,否則就刪除。這也是我今天這個bug的原因。修改辦法是用putValue函數來代替setValue.

          有什么說的不對的地方歡迎批評指正.

          posted @ 2007-08-28 22:17 dayue 閱讀(1118) | 評論 (0)編輯 收藏

          從插件中獲得絕對路徑:
                  
          TestPlugin.getDefault().getStateLocation().makeAbsolute().toFile().getAbsolutePath());

          通過文件得到Project:

          IProject project = ((IFile)o).getProject();

          通過文件得到全路徑:

          String path = ((IFile)o).getLocation().makeAbsolute().toFile().getAbsolutePath();

          得到整個Workspace的根:

          IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();

          從根來查找資源:

          IResource resource = root.findMember(new Path(containerName));


          從Bundle來查找資源:

          Bundle bundle = Platform.getBundle(pluginId);
          URL fullPathString
          = BundleUtility.find(bundle, filePath);

          得到Appliaction workspace:

          Platform.asLocalURL(PRODUCT_BUNDLE.getEntry("")).getPath()).getAbsolutePath();

          得到runtimeworkspace:
            
          Platform.getInstanceLocation().getURL().getPath();

          從編輯器來獲得編輯文件
          IEditorPart editor = ((DefaultEditDomain)(parent.getViewer().getEditDomain())).getEditorPart();
          IEditorInput input
          = editor.getEditorInput();
             if(input instanceof IFileEditorInput){
               IFile file
          = ((IFileEditorInput)input).getFile();
             }

          posted @ 2007-05-24 18:07 dayue 閱讀(355) | 評論 (0)編輯 收藏

                 CSS 意思就是 疊層樣式表Cascading Style Sheets ,樣式定義了HTML元素怎樣去顯示,樣式一般存儲在樣式表中,外部樣式表存儲在CSS文件中。使用CSS,你的HTML文檔可以用不同的樣式輸出來顯示。
                 HTML標簽起初被設計成為定義文檔的內容。通過使用像<h1>,<p>,<table>這樣的標簽他們應該表達的是"這是一個標題","這是一個段落","這是一張表格",而布局該由瀏覽器來處理并非使用格式化標簽. 作為兩大瀏覽器 - 網景 和 IE - 不斷地將新的HTML標簽和屬性(像<font>標簽和顏色屬性)添加到原來的HTML規格中,這讓建立清晰的HTML文檔內容并從形式中分離出來變的越來越困難.為了解決這個難題,W3C 這個非贏利的,建立標準的組織,為HTML4.0增加了樣式。所有主流瀏覽器都支持樣式表。
                  樣式表定義元素怎樣去顯示,就像在HTML3.2中字體標簽和顏色屬性一般保存在一個外部的.css文件一樣.外部樣式表能夠讓你改變所有出現在你WEB中的外觀和布局,而僅僅通過編輯一個單獨的CSS文檔.(原理就是一動多變)。
                   當多于一種的樣式指定一HTML元素時使用怎樣的樣式呢?
          1. 瀏覽器默認
          2. 外部樣式表
          3. 內嵌樣式表(在<head>標簽內)
          4. 行內樣式(在一HTML元素內) (最高優先級)

          posted @ 2007-05-08 17:48 dayue 閱讀(315) | 評論 (0)編輯 收藏

          1. 單一職責原則(SRP):一個類應當只有一個改變的原因,類只需要知道一件事情,它們應當有一個單獨的職責,要點就是當一個類需要改變時,應當只有一個原因。
          2. 開放-封閉原則(OCP):軟件實體(類、模塊、函數等)應當為擴展而開放,又為修改而封閉。這個原則有一個相當詳細的定義,但是一個簡單的意思是:你應當能夠改變一個模塊的周邊環境而無須改變模塊本身。
          3. Liskov替換原則(LSP):子類型(subtypes)必須是為它們的基類型(base types)可替代的。
          4. 依存關系倒置原則(DIP) :A.高層模塊應當不依賴低層模塊,它們應當依賴于抽象。
                                                          B.抽象應當不依賴于細節,細節應當依賴于抽象。
            更好的描述是:不要依賴那些容易變化的具體類。如果你要繼承一個類,從一個抽象類繼承吧。如果你要持有一個類的引用,從一個抽象的類引用吧。如果你要調用一個函數,從一個抽象的函數調用吧。
          5. 接口隔離原則(ISP):客戶不應當依賴那些它們根本不用的方法。

          總結:
          五個簡單的原則是:
          1、SRP--一個類應當只有一個發生變化的原因。
          2、OCP――應當能夠改變一個類的環境,而無須改變類本身。
          3、LSP――避免造成派生類的方法非法或退化,一個基類的用戶應當不需要知道這個派生類。
          4、DIP ――用依賴于接口和抽象類來替代依賴容易變化的具體類。
          5、ISP――給一個對象的每一個用戶一個接口,這個接口僅有用戶需要的方法。

           

          posted @ 2007-04-30 15:27 dayue 閱讀(418) | 評論 (0)編輯 收藏

                  命令模式是一個行為型模式,允許你創造一個對象的命令然后在需要時候可以執行。當你想創造一個undo/redo,log操作或者在稍晚時候執行命令時這個模式是有用的。
                  在這個模式里一個命令接口是必需的。對一個命令對象來說,它必須事先實現這個命令的方法。下面是一個簡單的命令接口,有一個方法需要實現執行的。
          public interface Command{
           
                   
          public void execute();
          }
                   所有被命令的類必須實現這個命令接口。下面是一個簡單的命令:當執行時控制臺打印"hello world"。
          public class HelloCommand implements Command{
                   
          public void execute(){

                    System.out.println(
          "Hello World");
          }

          }

                     
                   你可以創建一個HelloCommand的實例然后執行這個方法。

          posted @ 2007-04-30 14:13 dayue 閱讀(298) | 評論 (0)編輯 收藏

          在實現了IWorkbenchWindowActionDelegate接口的類中:
          private IWorkbenchWindow window;

          public void init(IWorkbenchWindow window) {
             
          this.window = window;
          }

          public void run(IAction action) {
             Shell parentShell 
          = window.getShell();
             MyDialog dialog 
          = new MyDialog(parentShell, );
              etc 
          }


          在實現了IObjectActionDelegate 接口的類中:
          private IWorkbenchPart targetPart;

          public void setActivePart(IAction action, IWorkbenchPart targetPart)
          {
             
          this.targetPart = targetPart;
          }


          public void run(IAction action) {
             IWorkbenchPartSite site 
          = targetPart.getSite();
             MyDialog dialog 
          = new MyDialog(site, );
              etc 
          }


          IViewPart 或者IEditorPart
          IShellProvider shellProvider = viewOrEditor.getSite();
          PlatformUI:
          Shell parentShell =
             PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();

          Display
          Shell parentShell = Display.getDefault().getActiveShell();


          以上各種方法對于獲取其它的一些rcp中的重要對象也都有借鑒意義。

          posted @ 2007-04-23 14:00 dayue 閱讀(1216) | 評論 (0)編輯 收藏

          主站蜘蛛池模板: 炉霍县| 大姚县| 华阴市| 镇赉县| 石家庄市| 水城县| 高唐县| 昭平县| 革吉县| 库车县| 家居| 元氏县| 尚义县| 鄱阳县| 洛阳市| 溆浦县| 南宁市| 遂溪县| 东乡县| 淮安市| 平遥县| 平武县| 安溪县| 文化| 璧山县| 桓台县| 台北市| 兴业县| 高清| 龙山县| 泾川县| 汝阳县| 永宁县| 奉化市| 陕西省| 哈密市| 西峡县| 屏山县| 平安县| 会泽县| 韩城市|