기존의 GEF에서 Properties View를 처리하는 방식은 [그림 1]과 같은 PropertySheetPage로 구성되어 밋밋한 감이 있었습니다. GMF의 Tabbed Properties View와 같은 형식인 [그림 2]와 [그림 3]도 GEF에서도 처리가 가능합니다.
Architecture
Tabbed Properties View는 크게 세종류의 확장점으로 구성되어 있습니다.
각각의 확장점은 ITabbedPropertySheetPageContributor와 연결이 되어 있습니다.
해당 모델이 선택됨에 따라서 Sections에 등록된 Section들이 해당 Tab에 보여지게 되는 형식입니다.
Tab들은 Category에 의해 분류가 됩니다.
이번에는 이정도까지만 정리를 할까 합니다.
이클립스 아티클이 너무 잘 나와서 따로 만들기에는 양이 너무 많을 것 같아서...
나중에 신기한 기능이나 확장가능한 부분이 나오면 정리해 볼 예정입니다.
게다가 중간에 Figure가 움직이지 않는 문제가 발생하였습니다.
예전에 할 때도 그랬었는데... 실수한 것을 따로 정리를 해 놓을 것 그랬나 봅니다.
역시 왠만해선 컴퓨터는 거짓말을 하지 않습니다.
유불이 문제였습니다....
만약 GEF에서 Figure가 움직이지 않는다면 다음을 체크해보세요~
1. PropertyChangeSupport 객체에 firePropertyChange() 메소드를 호출할 때, oldValue와 newValue가 같은 값을 넘기지는 않은지...
>> 같은 값을 넘기면 GEF에서 알아서 아무 이벤트도 발생시키지 않습니다.
2. Figure와 연관된 EditPart에서 refreshVisuals() 메소드가 아닌 registerVisuals() 메소드를 오버라이딩 한 것은 아닌지...
>> 저처럼 이클립스에서 Override/Implement Methods 기능을 이용하시는 분들은 자주 당하실 수도 있습니다.
Suppress compiler problem for 'switch' case fall-through
switch 문에 break 없이 사용되면 warning 처리를 해주네요.
@SuppressWarnings("fallthrough") 어노테이션으로 warning을 막을 수 있을까요?
Missing hashCode() method
hashCode() 메소드 없이 equals() 메소드가 오버리이딩된 것을 찾아 경고합니다.
Dead code
진입할 수 없는 코드를 찾아줍니다. (
Classpath resolution honors the 'Class-Path' header of JAR manifest file
MANIFEST.MF 의 Class-Path 헤더를 자동으로 클래스패스에 추가합니다.
Build path supports ".."
빌드 패스에 ".." 을 지원해줍니다.
Build path resolution tolerates duplicate entries
무슨 말인지 모를 때는 원문 그대로~
Duplicate entries in the build path are now tolerated if the redundant entry is found while resolving the build path and not at the raw level.
For example, two user libraries used in the project build path referring to the same JAR file are tolerated:
동일한 라이브러리를 두번 접근하면 문제가 된다는 군요...
Compiler compliance follows execution environment
제목 그대로 입니다. (과연 번역을 못한 것일까요...)
Java Views and Dialogs
Emphasized matching characters in Open Type dialog
Open Type (Ctrl + Shift + T) 다이얼로그에서 패턴 매칭이 강조됩니다.
Sort working sets in Package Explorer
워킹셋을 쓰시는 분이라면 필요할 수도 있고 없을 수도 있는 기능이지만 소팅을 추가적으로 지원합니다.
Delete working sets from the Package Explorer
패키지 익스플로러에서 워킹셋 레벨로 숨김/삭제를 지원합니다.
삭제가 되면 Other Projects로 하위 프로젝트들이 자동으로 이동하겠죠~
Paste patch into Package Explorer
What's the quickest way to apply a patch from Bugzilla? Just open the attachment, copy the patch to the clipboard and paste it into the Package Explorer. (... 영어로 보셔요...)
Call Hierarchy can expand with constructors
이... 이건 먼가요... Call Hierachy View 에 새로운 기능이 추가된 것으로 보입니다만...
처음에 무슨 기능이 추가되었는지 해석이 안되서 고민을 했습니다.
역시 해석이 안되면 손가락이 바쁘게 움직어야겠죠.
3.4에서 확인해본 결과 아래와 같이 템플릿 클래스로 새로운 객체를 생성을 위해
자동완성을 이용하면 (new ArL 상태에서 Ctrl + Space) 아래와 같이 나오게 됩니다.
3.5에서는 선택 가능한 생성자들의 목록을 보여주게 됩니다.
이번 것을 따라해보면서 새로 알게된 사실이 있습니다. 뭐 다른 분들은 이미 아실 수도 있겠지만...
클래스의 대문자들의 첫글자만으로 자동완성을 이용하면 사용할 수 있다는 점입니다.
NPE 로 자동완성을 이용하면 NullPointException 이라는 것을 쉽게 코딩할 수 있습니다.
대문자의 첫글자로는 내용이 너무 많다면 대문자뒤에 따라오는 소문자로도 자동완성이 가능합니다.
3.4 에서도 되는 기능이였는데 오늘 알게되었네요~ ㅎㅎ
Open Implementation hyperlink
기존에 Ctrl 키를 누르고 메소드를 누르게 되면 메소드 정의로 이동을 하였습니다.
아래와 같은 계층 구조가 있을 경우
ITest 인터페이스에서 컨트롤을 누르고 test() 메소드에 마우스를 가져다대면 아래와 같은
선택창이 나오게 됩니다. 기존 3.4에서는 인터페이스 정의로 이동을 하게되었습니다. 하지만 3.5에서는 메소드 정의와 메소드 구현을 선택하여 이동을 할 수 있습니다.
위와같이 구현체가 여러개일 경우에는 선택할 수 있는 창이 나오게됩니다.
Select comment with double click
주석의 맨 끝 부분을 더블클릭하면 주석 전체가 선택이 됩니다.
Quick Fix to start Rename refactoring
3.4 에서는 메소드나 클래스 이름에서 Quick Fix (Ctrl + 1) 를 하게 되면 파일 내에서 이름만
변경하는 기능을 제공하였는데, 3.5 에서는 리팩토링할 수 있는 기능도 제공이 됩니다.
아래 보시는 Rename in file 은 파일내에서 이름만 변경하는 것이고, Rename in workspace 가 리팩토링입니다.
Links in Javadoc headers
JavaDoc 에서 링크가 제공됩니다. 조금 더 쉽게 파일간 이동이 가능하게 되었습니다.
Open in Properties File action in NLS Hover
NSL Hover 에서 프로퍼티 파일을 여는 기능이 추가되었습니다.
Formatter option to preserve user line breaks
코드를 짜다가 형식이 뒤틀리거나 다른사람에게서 코드를 받게 되면 Ctrl + Shift + F 를 통해서
자신의 코드 스타일로 포매팅을 하게 됩니다.
하지만 아래와 같이 여러줄로 연결된 스트링들이 눈에 보기 좋게 해 놓더라도 포매팅에 의해서
한줄로 이어지게 되었습니다.
3.5 에서는 코드 스타일 설정에서 위와 같은 형식으로 포매팅이 가능하게 되었습니다.
Window > Preferences >> Java > Code Style > Formatter 에서 새로운 프로파일을 생성하여
Line Wrapping 탭의 Never join lines 를 체크하시면 포매팅을 하더라도 아래와 같은 결과를 확인할 수 있습니다.
그냥 시작했는데 너무 많네요... 한번에 다 끝내려고 했는데 Java Editor 만 일단 정리합니다. -_ㅜ...