오늘 새로 포팅한 AIX + IBM JDK 6 + Weblogic 9.2 에 문제가 발생해서 JDK 버전을 5로 컴파일 할일이 생겼습니다.
JDK 1.5 를 다운받아서 다시 설치하고 이클립스 vm 을 1.5로 설정하고 띄웠는데... 프로젝트에서 빨간불이 들어왔습니다.
Access restriction: Class is not accessible due to restriction on required library
역시 문제가 생기면 구글 검색이 최고입니다.
해결책
이클립스의 환경설정의 변경을 통해서 임시로 해결을 할 수 있습니다. Windows -> Preferences -> Java -> Compiler -> Errors/Warnings (프로젝트) Properties -> Java Compiler -> Errors/Warnings
Forbidden reference (access rules) 를 Warning 으로 변경해줍니다.
완벽하게 해결한것은 아니지만 다른 문제들을 해결해야 하므로 일단은 이렇게 사용합니다... -_ㅜ...
어제 WoC 부트캠프에서 멘토님이 메이븐을 설명하시다가 터미널창에서 메이븐 명령어를 치는 것을 보고 기존에 만들었던 플러그인을 업그레이드 하면 좋겠다는 생각이 들어서 작업에 들어갔습니다.
아래 그림처럼 리소스를 우클릭하게되면 Open Terminal 이라는 메뉴가 있습니다.
메뉴를 클릭하면~ 아래와 같은 터미널창이 뜨게 됩니다.
문제는 단축키가 잘 안먹는다는 점이...
org.eclipse.ui.popupMenus > action 의 definitionId 를 command Id 로 설정을 했는데 레이블에는 나오는데 실제로 단축키가 먹지않는... 그것 때문에 계속 해보다가 그냥 포기하고 나중에 마무리 하려고 합니다. ㅋㅋㅋ
일반적으로 GEF 에서 EditPart 에 EditPolicy.LAYOUT_ROLE 로 editpolicy 를 install 하게 됩니다.
이렇게 처리할 경우 생성이나 이동, 리사이징에는 별 무리 없이 사용할 수 있을 것이라 생각하였으나 한가지 문제가 있었습니다. 다른 자식 피규어와 겹칠경우 정상적으로 이동이 되지 않는 것이었습니다. LAYOUT_ROLE 로는 다른 자식 피규어 위에서 이동하는 것에 대한 이벤트를 잡지 않는 것으로 파악이 되었습니다. 그래서 조금 찾아보니 될 것만 같은 것이 있어서 한번 수정한 후 실행을 해보았습니다.
그냥 한번 해보았을 뿐인데... 원하는 결과가 나와버렸습니다. 그래서 구글에서 좀 찾아보니 아래와 같은 자료가 있었습니다.
Because of the relationship between handles and layouts, it is recommended that thePRIMARY_DRAG_ROLEeditpolicy be installed by the parent'sLayoutEditPolicy, 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_ROLEpolicies on each child.
무신 말씀을 하시는지는 정확하게 파악을 하지 못하였으나 잘 돌아가주시니 감사할 따름입니다.
The DragEditPartsTracker extends basic selection behavior to allow the selected parts to be dragged within their graphical viewer. Dragging the selected parts can result in three potential interactions: move, reparent, and clone. All three use theChangeBoundsRequest, which extends GroupRequest to include a size delta, move delta, and mouse location.
While dragging the selection, if the tracker targets the part's original parent, the request is typed asREQ_MOVE. If the target changes, the interaction becomes a reparent. For a reparent, a request of typeREQ_ORPHANis sent to the old parent, while the new target is sent a request of typeREQ_ADD. When the CTRL key is pressed (ALT on the Mac), the operation is always aREQ_CLONE, which is only sent to the target part.
All of these requests are related in that they require the target to process a rectangle and a mouse location. The LayoutEditPolicy is responsible for handling each of these request types. For layouts which use constraints, each part's original bounds is taken and modified by the size and move deltas to determine a new bounds, for which a corresponding constraint is found. For index-based layouts, the mouse location is used to establish the new index.
AContainerEditPolicycan optionally be used to contribute additional commands (not related to the layout) during ADD, ORPHAN, and CLONE requests.
Resizing
Resizing falls under the same category as changing bounds. Note that when resizing either the top or left sides, the location of the part is also changed. Resizing only makes sense for layouts with constraints, such as XYLayout. TheResizableEditPolicyadds up to eight resize handles to its host. When the Selection Tool is clicked on one of these resize handles, aResizeTrackerperforms a resize on the selected parts understanding "resize". SHIFT and CTRL key modifiers can be used to constrain the resize operation.
The types of handles available on an editpart depend on the layout manager in which its figure is placed. For example, parts inside a table might have handles for adjusting insets, padding, column span, or other attributes. Some layouts don't need any handles, but four corner handles should be added just to indicate selection. Dragging these handles would be the same as dragging the part itself.
Because of the relationship between handles and layouts, it is recommended that thePRIMARY_DRAG_ROLEeditpolicy be installed by the parent'sLayoutEditPolicy, 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_ROLEpolicies on each child.
TheMatchSizeActionmatches the size of the selected parts to that of the primary selected part's size. This action is implemented in a way similar to manually resizing the individual parts, and it uses the same request and type.
TheAlignmentActionuses anAlignmentRequest, which extends ChangeBoundsRequest. When using a ChangeBoundsRequest, the part's current placement in the Control (in absolute coordinates) is passed to the request, which then returns a modified version. Using this pattern, alignment is able to adjust each part's rectangle by different amounts. In most cases, alignment can be treated no differently than a move. This action aligns all selected parts with one of the edges of the primary selected part.
이클립스에 기본으로 있는 Source > Externalize Strings... 의 소스를 확인하여 작업을 시작하였습니다.
GWT 를 개발하다 보면 다국어 처리가 귀찮아 일단은 스트링으로 처리를 해 놓는데 그 것을 하나하나 찾으려면 시간도 적지않게 소요되고 하나하나 작업을 하기에는 귀찮은 작업들이라 kenu님 블로그에서 확인한 Externalize Strings... 를 잘 고치면 GWT 에서도 써먹을 수 있지 않을까 하는 생각에 도전!! 1차시기에는 미로와 같은 internal 의 수렁에 빠져들어서 포기했습니다. 막상 오늘 다국어 처리를 하다보니 귀찮아서 2차시기에 돌입 초기버전을 만들게 되었습니다.