Programming 77

Producer/Consumer 예제

두 곳의 데이터 소스에서 입력을 받는 동안 사이사이 두 입력값의 동일성을 비교해서 화면에 나타내려고 할 때 사용한 Thread 처리 방식이다. Consumer는 데이터가 없으면 대기하다가, Producer가 데이터를 입력해서 생기면 비교하고 결과를 리턴하는데, 종료 처리는, 두개의 Producer가 생성을 마쳤는지를 검사하다가 interrupt 하게 된다. 쉽게 말해, 두 명의 제빵사가 빵을 만들고 빵 나올때까지 손님이 기다리는 상황인데 빵이 나오면, 손님은 빵을 바로 집고 또 기다린다. 두 명 모두 빵을 다 찍어내면(영업 끝나면) 손님보고 나가라고 interrupt 한다. [Main.java] package pc; public class Main { public static void main(Strin..

Programming/Java 2011.06.20

ListView, TreeView 처리 정리

* 선택항목 얻기 IStructuredSelection sel = (IStructuredSelection)treeViewer.getSelection(); sel.getFirstElement() * deprecated 된 TableTreeViewer를 TreeViewer로 구현하기 tree - treeViewer - treeColumn - treeColumn 과 같이 만들어 두고, ITreeContentProvider, ITableLabelProvider 를 상속받은 Provider들로 설정해주면 된다. 주의할 점은 TreeColumnViewer 를 사용하면 안된다는 것이다!!! 이것은 오직 LabelProvider 를 써서 column 단위의 처리는 하지않아 오류가 나올 것이다.

SWT Subclassing

몇가지 이유로 SWT 에서 Subclassing 이 금지된다고 한다. (has-a 관계로 이용하도록 권장하는 듯 하다) http://www.eclipse.org/swt/faq.php#subclassing RCP 개발중 Main ToolBar(CoolBar)에 콤보박스를 추가할 일이 있었는데, setWidth 나 어떠한 방법을 이용해도 ToolBar에서 크기가 고정되는 것이었다. 호출 구조를 따라가다 보니 Combo 사이즈를 미리 정해주는 법 밖에 방법이 없었다. 아래와 같이 computeSize 및 checkSubclass 를 재정의 해 주었다. protected Control createControl(Composite parent) { combo = new Combo(parent, SWT.READ_ON..

Key Binding 바꾸기

기존 binding은 org.eclipse.ui.contexts.window 을 통해 이루어 진다. 1. 새 context 를 생성하여 parentId 를 org.eclipse.ui.contexts.window 로 함 2. org.eclipse.ui.bindings 에 새 key binding 추가 - contextId를 새로만든 contextId 로 지정하고 commandId 를 적절히 지정한다. (연결할 command) 3. context 를 바꿔줘야 한다. (기존 책이나 pdf 등에 나오질 않음) - workbench 가 생성된 이후에 아래 코드를 호출하여 바꿔준다. PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() { public v..

XML-RPC Java / Android 개발 환경 구축

XML-RPC Spec. http://www.xmlrpc.com/ Apache XML-RPC Java Lib. http://ws.apache.org/xmlrpc/ Android XML-RPC Lib. (Java) http://code.google.com/p/android-xmlrpc/ ws-commons-java5-1.0.jar (JDK 5 이전 버전에서 JDK 5의 클래스를 이용하기 위한 class) http://mirrors.ibiblio.org/pub/mirrors/maven2/ws-commons-java5/ws-commons-java5/1.0/ws-commons-java5-1.0.jar Retrotranslator (JDK 5 이후 class, jar 들을 이전 버전 호환으로 만들어 주는 툴) h..

[XML] DTD 선언

문서 유형 선언 1. 외부 DTD 문서 선언XML문서가 어떤 마크업언어로 작성되었는지 표시하여 문서를 전달받은쪽에서 해석이 가능하도록 하는것을 문서 유형 선언이라고 한다. 기본적으로 다음의 문법을 따른다. SYSTEM 키워드를 이용한 선언 : 외부에 파일이 있는 경우 PUBLIC 키워드를 이용한 선언 : 공개적인 사용을 위해 업체및 국제공인 단체에서 작성된 DTD 사용 PUBLIC 키워드를 사용하기 위해서는 PUBLIC 식별자를 생성해야 한다.문법 : +|-//DTD개발 및 보수업체명//DTD명 및 버전번호//사용된언어예제 HTML DTD의 PUBLIC 식별자 XML DTD의 PUBLIC 식별자 2. 내부 DTD 서브셋 문서선언 내부 파라미터 엔티티DTD내용의 일부를 DTD내부에서 선언한것을 말한다. 별..

Programming 2010.10.18

Preferences

1. manifest 의 extension 탭 열기2. menuContribution 밑으로 command 생성3. commandId 는 org.eclipse.ui.window.preferences 로 하면 main preference page 임 Sample 로 Preference page 를 추가하면 코드가 생성된다.만약 Activator 를 쓰지 않는다면, 관련 에러가 나오는데 이를 PlatformUI 로 바꿔주면 된다. 만약 직접 생성하려면,org.eclipse.ui.preferencePages (preference page 지정)-> preference page 의 왼쪽 트리에 추가 하려면 페이지 별로 계속 추가해주면 됨 org.eclipse.core.runtime.preferences (pre..