블로그 이미지
올해목표 // 10월 어학연수 떠나자~ 자수씨

카테고리

전체글 (1457)
Brand New! (28)
주절주절 (213)
MOT (11)
해외쇼핑 (49)
쇼핑노트 (150)
취미생활 (94)
iPhone (4)
Eclipse (121)
PDE (3)
RCP (11)
GEF (31)
GMF (3)
EMF (1)
Plug-ins (26)
draw2d (2)
Google (83)
Spring (31)
JAVA (176)
JavaScript (59)
WEB (49)
Database (20)
OS (26)
Tools (8)
Tips (26)
IT정보 (1)
Book (21)
Programming (37)
외부행사 (43)
주변인들 (17)
여행노트 (60)
학교생활 (30)
회사생활 (52)
사회생활 (5)
외국어공부 (12)
잡동사니 (30)
Total
Today
Yesterday
 
02-29 00:00
 

달력

« » 2024.2
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29
 

최근에 올라온 글

최근에 달린 댓글


지난번 포스팅 (2010/10/31 - [Eclipse/GEF] - [GEF] 키보드 방향키로 크기/위치 제어하기) 에 추가적인 개선사항을 적용해 보았습니다.

GEF 의 GraphicalEditor 에 Grid 를 적용할 경우 12 픽셀씩 격자가 생기게 됩니다. 그 크기만큼 조절하도록 수정하였습니다.


기존의 1 픽셀 단위로 변경되던 것을 Ctrl 키를 누른 상태로 방향키를 누르면 12 픽셀씩 변경되도록 하였습니다.
event.stateMask 와 SWT.SHIFT, SWT.CTRL  키를 마스크 연산을 하여 처리하였습니다.




Posted by 자수씨
, |

방향키로 크기와 위치를 제어해보려고 여러 사이트를 뒤져보았으나, 속 시원한 레퍼런스를 찾기 어려워서... 그냥 마구잡이로 만들었습니다. GEF 구조를 더 잘 알았으면 EditPolicy 도 이용했을텐데... 아직 거기까지 레벨은 안되서...


GEF 는 커맨드 단위로 변경을 처리합니다. 키보드 처리를 위해서는 별도의 Command 클래스를 생성합니다.

ArrowKeyChangeLayoutCommand.java



키보드 입력을 처리하는 GraphicalViewerKeyHandler 를 상속받아 Command 를 생성하는 별도의 KeyHandler 클래스를 생성합니다.

FormWizardArrowKeyHandler.java




GraphicalEditor 를 초기화 하는 부분에 아래와 같이 설정합니다.

GraphicalViewer viewer = getGraphicalViewer();
viewer.setKeyHandler(new FormWizardArrowKeyHandler(viewer, getSite().getSelectionProvider(), getCommandStack()));


GraphicalViewer 에서 Figure 를 선택하고 방향키를 누르면 위치가 이동되며, SHIFT 키를 누르고 방향키를 누르면 크기가 조절됩니다.

예전부터 묵혀두었던 문제를 처리...

Posted by 자수씨
, |



GEF 프로퍼티뷰를 좀 이쁘게 꾸며보려고 뚝딱 거리고 있습니다.
역시 공수가 많이 들어가네요...
저기에 라인 스타일 부분만 추가하면 될 것 같습니다.

혹시라도 필요하신 분이 있으면 연락주세요 ㅋㅋㅋ



Posted by 자수씨
, |

오래 전 포스팅에서 한번 언급했었던 Annotation을 이용한 EditPartFactory를 정리합니다.



왜 플러그인 이름을 그렇게 지었냐고 물어보신다면... 그냥 웃지요...

아직 GEF를 하시는 분이 계실지는 모르겠으나 삽질을 줄일 수 있는 방법을 서로 공유했으면 좋겠습니다.



 

Posted by 자수씨
, |


제너레이트 되는 소스들과 Tab으로 구성된 Properties View에 반해서 도입을 고려했던 GMF는 시간의 부족이라는 말도 안되는 핑계로 인해 다시 고히 접어두었습니다. 그러던 와중에 검색을 통하여 한 가지를 발견할 수 있었습니다.

The Eclipse Tabbed Properties View

2006년 2월에 올라온 이클립스 아티클인데, 필요한 시점에 검색이 되었던 것이었습니다.
(예전에 할 일이 없어서 이클립스 아티클을 쭉 읽어본 적이 있었는데 그 때는 뭔지 몰랐던 것 같습니다...)

새로 시작한 프로젝트에 적용도 해볼 겸(프로젝트 규모가 작을 때 적용하는 것이 좋을 것 같아서) 시도를 해보았습니다.



이번에는 이정도까지만 정리를 할까 합니다.
이클립스 아티클이 너무 잘 나와서 따로 만들기에는 양이 너무 많을 것 같아서...
나중에 신기한 기능이나 확장가능한 부분이 나오면 정리해 볼 예정입니다.





Posted by 자수씨
, |
2008/07/17 - [Eclipse/GEF] - [GEF] 무작정 따라하기 - Part. 4 Model 의 생성
2008/07/18 - [Eclipse/GEF] - [GEF] 무작정 따라하기 - Part. 5 Layout 다루기


다시 GEF로 프로젝트를 진행하기 위해서 예전에 만들었던 따라가기를 해보았습니다.

생각만큼 빨리빨리 진행이 되지 않았습니다...

게다가 중간에 Figure가 움직이지 않는 문제가 발생하였습니다.
예전에 할 때도 그랬었는데... 실수한 것을 따로 정리를 해 놓을 것 그랬나 봅니다.

역시 왠만해선 컴퓨터는 거짓말을 하지 않습니다.
유불이 문제였습니다....

만약 GEF에서 Figure가 움직이지 않는다면 다음을 체크해보세요~
1. PropertyChangeSupport 객체에 firePropertyChange() 메소드를 호출할 때, oldValue와 newValue가 같은 값을 넘기지는 않은지...
 >> 같은 값을 넘기면 GEF에서 알아서 아무 이벤트도 발생시키지 않습니다.

2. Figure와 연관된 EditPart에서 refreshVisuals() 메소드가 아닌 registerVisuals() 메소드를 오버라이딩 한 것은 아닌지...
 >> 저처럼 이클립스에서 Override/Implement Methods 기능을 이용하시는 분들은 자주 당하실 수도 있습니다.

개발자들은 삽질 노트를 필히 가지고 있어야 할 것 같습니다.



Posted by 자수씨
, |

일반적으로 GEF 에서 EditPart 에 EditPolicy.LAYOUT_ROLE 로 editpolicy 를 install 하게 됩니다.


이렇게 처리할 경우 생성이나 이동, 리사이징에는 별 무리 없이 사용할 수 있을 것이라 생각하였으나 한가지 문제가 있었습니다. 다른 자식 피규어와 겹칠경우 정상적으로 이동이 되지 않는 것이었습니다. LAYOUT_ROLE 로는 다른 자식 피규어 위에서 이동하는 것에 대한 이벤트를 잡지 않는 것으로 파악이 되었습니다. 그래서 조금 찾아보니 될 것만 같은 것이 있어서 한번 수정한 후 실행을 해보았습니다.



그냥 한번 해보았을 뿐인데... 원하는 결과가 나와버렸습니다. 그래서 구글에서 좀 찾아보니 아래와 같은 자료가 있었습니다.
Because of the relationship between handles and layouts, it is recommended that the PRIMARY_DRAG_ROLE editpolicy be installed by the parent's LayoutEditPolicy, which defines abstract methods for this purpose. If a container changes layout managers during editing, typically the layout policy gets swapped with one for the new layout manager. The new policy then replaces the stalePRIMARY_DRAG_ROLE policies on each child.

무신 말씀을 하시는지는 정확하게 파악을 하지 못하였으나 잘 돌아가주시니 감사할 따름입니다.


뭐 해결했다는게 중요한게 아닙니까 하하하하;;;;





Posted by 자수씨
, |

GMF 는 모르겠지만 GEF 로 할 경우 모델이 늘어나게 되면 여러군데에서 추가해주어야 할 부분들이 많습니다.

이런것들을 줄이기 위해 어노테이션을 간간히 적용하고 있습니다.

그들 중에 하나를 소개합니다.


GMF 도 슬슬 확인해봐야 하는건지.. .끄으응;;;

Posted by 자수씨
, |

기존방식은 모델에 프로퍼티를 하나 추가하게 되면 IPropertySource 를 구현한 곳에서 PropertyDescriptor 를
추가 하고 getPropertyValue 와 setPropertyValue 를 수정해야하는 귀찮은 작업을 처리해야 합니다.
그리고 보기에도 좋지 않습니다. 큰 맘 먹고 어노테이션 리플렉션 을 이용하여 자동화를 처리하였습니다.
(프로퍼티가 얼마나 추가될지 모르는 상황이기에... 퍼포먼스 따위는 하드웨어에게 양도...)



관심이 있으시면 연락주세요 ㅋㅋㅋㅋㅋ

Posted by 자수씨
, |
GEF/EMF/GMF 스터디 기간 한달

개발기간 일주일

외로운 솔플...

테이블은 어떻게 구현해야하지;;;

사용자 삽입 이미지

Posted by 자수씨
, |

글 보관함

최근에 받은 트랙백