Eclipse

GEF - Editor with Palette

_침묵_ 2007. 3. 31. 23:54

팔레트를 가지고 있는 에디터를 생성해보도록 하자.

 

에디터는 두 가지 설정을 해야 하는데, 첫 번째는 Palette의 정보를 컴퓨터에 저장을 해야한다.

저장을 하는 이유는 에디터의 설정을 변경후 다음에 다시 에디터가 열릴게 되면 저장했던 상태를 다시 보여주기 때문이다. 저장되어야 하는 내용은 palette의 위치와 너비, 상태값 등 몇 가지가 된다.
그리고 두번째로는 EditDomain을 설정해야 한다. EditDomain의 역할은 Command 와 Palette등을 관리하는 역할을 한다. Command을 관리한다는 의미는 사용자의 이벤트에 따라 실행해야 하는 Command을 스택으로 관리를 하고, 여기서 Undo / Redo등을 활성화 혹은 비활성화 등을 하게 된다.

 

GEF에서 제공하는 에디터는 다음 2가지가 있다.

1.GraphicalEditorWithFlyoutPalette

GraphicalEditorWithFlyoutPalette 은 팔레트가 이동을 하고, 접히거나 펼치수 있다.


사용자 삽입 이미지
 

 

2. GraphicalEditorWithPalette

GraphicalEditorWithPalette는 팔레트가 고정이 되어있는 형태이다. 속성을 변경해서 안보이게 할 수 있다.

사용자 삽입 이미지
 
 

3. 구현 소스

public class ShapesEditor extends GraphicalEditorWithFlyoutPalette {
 public ShapesEditor() {
  super();
  setEditDomain(new DefaultEditDomain(this));
 }
 protected FlyoutPreferences getPalettePreferences() {
  return new FlyoutPreferences() {
   private IPreferenceStore getPreferenceStore() {
    return ShapeEditorPlugin.getDefault().getPreferenceStore();
   }
   public int getDockLocation() {
    return getPreferenceStore().getInt("PALETTE_DOCK_LOCATION");
   }
   public int getPaletteState() {
    return getPreferenceStore().getInt("PALETTE_STATE");
   }
   public int getPaletteWidth() {
    return getPreferenceStore().getInt("PALETTE_SIZE");
   }
   public void setDockLocation(int location) {
    getPreferenceStore().setValue("PALETTE_DOCK_LOCATION", location);
   }
   public void setPaletteState(int state) {
    getPreferenceStore().setValue("PALETTE_STATE", state);
   }
   public void setPaletteWidth(int width) {
    getPreferenceStore().setValue("PALETTE_SIZE", width);
   }
  };
 }
 protected PaletteRoot getPaletteRoot() {
  return null;
 }
 public void doSave(IProgressMonitor monitor) {
 }
 public void doSaveAs() {
 }
 public boolean isSaveAsAllowed() {
  return false;
 }
}

 

생성자에서 EditorDomain을 설정을 하고, getPreferenceStore에 저장된 팔레트의 속성값을 반환하도록 하였다.

 

다음에는 에디터에 Figure를 그려보도록 하자.

'Eclipse' 카테고리의 다른 글

Graphical Editing Framework으로 Eclipse 기반 애플리케이션 구현하기  (0) 2007.04.01
GEF - 원그리기  (0) 2007.03.31
GEF - Diagram 생성  (0) 2007.03.31