본문 바로가기

JAVA

(18)
네비게이터 뷰로부터 현재 선택된 프로젝트 알아내기 이클립스 플러그인 개발에서 현재 선택된 프로젝트를 알아내는 방법중에서 네이게이터 뷰(Project Explorer, Package Explorer, 등등)으로부터 현재 선택된 리소스에서 프로젝트를 얻어내는 방법이 가장 일반적인 방법이다. 네이게이터 뷰에서 리소스가 선택되면 자동으로 셀랙션 서비스에 IStructureSelection 형태의 셀랙션 컨테이너 형태로 선택정보가 저장되는데 이를 잡아서 알아내면 된다. // 셀랙션 서비스로부터 현재 선택된 셀랙션 객체를 얻는다. ISelection selection = Workbench.getInstance() .getActiveWorkbenchWindow() .getSelectionService() .getSelection(); IProject project ..
ScrolledComposite 사이즈 설정 ScrolledComposte 위에 동적으로 객체를 추가하여 사이즈 변경이 있을 때 setMinSize() 함수를 호출하여 추가되어 늘어난 사이즈를 설정해야 스크롤이 변경된 사이즈를 반영한다. ScrolledComposite.setMinSize(int width, int height)
이미지 설정 기능이 추가된 간단한 커스텀 이미지 버튼 클래스 아래 처럼 이미지 겔러리 기능을 구현 할 때 활용할 수 있다. ㅎ
MultiPageEditor Page 위에 중첩 에디터 구현 프로젝트 수행 도중 디자인 설계 에디터 우측에 접었다 폈다하는 텍스트 에디터를 추가해야 하는 필요성이 생겨 중첩된 에디터 구현 해보았다. 기본적인 아이디어는 MultiPageEditor의 "addPage" 함수를 참조 하였다. public void addPage(int index, IEditorPart editor, IEditorInput input) 기본 컨셉은 에디터가 생성되기 위해서는 "IEditorSite" 인스턴스가 필요한데 이는 부모 에디터인MultiPageEditor의 MultiPageEditorSite 클래스를 생성하여 구하고 이를 중첩하여 생성 시킬 에디터의 init(IEditorSite, IEditorInput)에 전달하여 기능을 구현하는 것이다. ▼중첩 에디터 예시 ▼중첩 에디터 구현..
SashForm을 활용한 보조영역 펼침 접힘 구현 UI 작업을 하다보면 아래와 같이 보조 영역에 대한 펼침과 접힘을 구현해야 할 경우가 생긴다. 이경우 SWT SashForm을 활용하는 것이 가장 깔끔하게 작업을 마무리 할 수 있다. ▼ 예제의 UI 구성 SashForm을 구성하는 컴포지트를 생성하고 각 컴포지트의 비중을 설정하는 것은 아래의 코드로 구현된다. // SashForm 생성 SashForm sashForm = new SashForm(compositeBody, SWT.NONE); // 메인 컴포지트 생성 Composite compositeMain = new Composite(sashForm, SWT.NONE); compositeMain.setBackground(SWTResourceManager.getColor(SWT.COLOR_GREEN));..
타이머 설정 안드로이드에서는 Handler 객체를 통해서 타이머를 구현한다. Handler의 익명 클래스의 함수의 handleMessage() 함수를 통해 Handler 객체가 메시지를 받을 때 작업을 수행하도록 한다. Handler.sendEmptyMessage(int what); // 메시지 즉시 전송 Hanlder.sendEmptyMessageDelayed(int what, long delayMillis); // 일정 시간 이후 메시지 전송 sendEmptyMessageDelayed() 함수를 통해 타이머 기능을 수행 할 수 있게 된다. Handler mHandler = new Handler() { // 메시지를 수신 받아 처리한다. @Override public void handleMessage(Message..
Canvas를 활용한 Custom 버튼 활용 상태를 Normal, Hover, Click, Toggle(선택한 상태)로 구분한 Custom 버튼을 Canvas를 상속받아 구현하였다. 또한 해당 Custom 버튼을 컴포지트에서 생성하여 활용하는 sample 코드도 구현하였다. 상단의 "ADD" 버튼을 선택하면 하단의 컴포지트에서 Custom 버튼이 생성되는 단순한 코드이다. 다면 주의할 점은 버튼을 생성하고 부모 컴포지트에서 "layout()"함수를 호출해줘야 한다는 점이다. "layout()"함수를 호출해주지 않으면 생성된 객체의 객체크기가 설정되지 않아 객체를 확인할 수 없게 된다. // TestApp.java // Custom 버튼 추가 btnNewButton.addSelectionListener(new SelectionAdapter() { @..
JSONObject 순회 JSONObject의 keySet()의 iterator()를 활용하여 순회한다. JSONObject의 keySet()은 LinkedHashMap 객체! JSONObject objModel = (JSONObject) JSONValue.parse( jsonData ); Iterator iter = objModel.keySet().iterator(); while( iter.hasNext() ) { String key = (String)iter.next(); if(objModel.get(key) instanceof JSONObject) { JSONObject value = (JSONObject) objModel.get(key); // 작업 .... } }