JFACE new Window의 다이얼로그 생성

RCP/SWT & JFACE|2016. 12. 24. 00:49

독립창으로 다이얼로그 생성

새로운 독립창에  dialog를 생성하고 싶은 경우에는


다음과 같이 설정한다.


예를들어


a 라는 다이얼로그를 생성할 때, parent Shell을 null 값을 전달하며


새로운 창에 다이얼로그가 생성된다.


Dialog a = new Dialog(null);

a.open();


생성된 다이얼로그는 독립된 task bar에 아이콘을 가지게 된다.


다른 창보다 강제로 상위에 표시

a.forceActive();

a.forceFocus();


blocking 해제 방법

a.setBlockOnOpen(false);



태그 : Dialog, jfae, window

댓글()

shell Listener

RCP/SWT & JFACE|2016. 12. 24. 00:47

shell에 리스너를 추가하여 


shell이 최소화 되었을 때, 다시 최대화 되었을 때, 활성화 됬을 때 종료됬을 때 등


shell 자체의 이벤트에 대한 리스너를 설정할 수 있다. 


  shell.addShellListener(new ShellListener() {


      public void shellActivated(ShellEvent event) {

        System.out.println("activate");

      }


      public void shellClosed(ShellEvent arg0) {

        System.out.println("close");

      }


      public void shellDeactivated(ShellEvent arg0) {

      }


      public void shellDeiconified(ShellEvent arg0) {

      }


      public void shellIconified(ShellEvent arg0) {

      }

    });

댓글()

스플래시 이미지를 png 파일로 할 수 없는이유

RCP/SWT & JFACE|2016. 12. 24. 00:44

Look here http://wiki.eclipse.org/Equinox_Launcher

for some details on the -showsplash argument which controls the initial

displaying of the splash screen in the launcher.

 

There are really three phases to the splash screen when eclipse starts:

1) Native code, before java starts

2) Java calling out to Native code from Main, before OSGi starts

3) Java code working through SWT, after workbench starts

 

For (1) and (2) some platforms may be able to display png, but not all. 

Each plaform has different native implementations, you'll need to see which

ones support png:

- win32 - uses LoadImage with IMAGE_BITMAP

- gtk - uses gdk_pixbuf_new_from_file, gdk_image_new_from_pixbuf. 

- cocoa - uses NSImage

- carbon - uses CGImageSourceRef (or custom bmp code on older systems)

- motif uses custom bmp code

 

If the platform(s) you are developing for can show png, then you might just

be able to name your png as "splash.bmp" and be happy.

 

Otherwise, you will need to wait until SWT is up and running for part (3)

and do your magic with SWT code.

 

출처: <https://www.eclipse.org/forums/index.php/t/169876/>

 

태그 : Eclipse, RCP, Splash

댓글()

대용량 테이블 조회가 가능한 Nattable 예제 실행 방법

RCP/SWT & JFACE|2016. 12. 24. 00:43

TableViewer로는 대용량 데이터를 가져오는데


한계가 있다.


그래서 이클립스에서 제공하는 nattable을 사용하면 조금 더 빠르게 대용량 데이터를


가져올 수 있다.


그 nattable의 예제와 소스코드를 볼 수 있는 방법을 소개한다.


첨부된 파일 두개를 모두 다운 받고


cmd 창에서 다음 명령어를 실행시킨다.


java -cp org.eclipse.swt.win32.win32.x86_64-4.3.jar;NatTableExamples-0.9.0.jar org.eclipse.nebula.widgets.nattable.examples.NatTableExamples


 


관련 주소

https://eclipse.org/nattable/documentation.php?page=getting_started


댓글()

OSGI & Platform

RCP/SWT & JFACE|2016. 12. 24. 00:39


OSGI?

다양한 이클립스의 런타임 매커니즘을 하나로 묶어서 사용할  있도록 만든 런타임 모델이 OSGI 런타임 모델이다.

 

Platform

현재 실행중인 이클립스 환경에 대한 정보를 제공한다 클래스를 사용해 설치되어 있는 플러그인(번들),. 확장확장점명령행 인자 , 작업관리자 등의 정보를 얻을  있다.

Ex ) getProduct() 현재 실행 중인 이클립스 제품 정보를 반환한다.

태그 : OSGi, platform, RCP

댓글()

RCP 프레임워크 프로젝트의 플러그인 클래스

RCP/SWT & JFACE|2016. 12. 24. 00:39

플러그인 클래스

모든 플러그인은 프로그램 관저에서 플러그인을 대표하는 클래스를 내역서 편집기의 개요 페이지에서 선언할  있다. (Menifest OverView 페이지 이기도 하며, 3.2 이상부터는 Activator라고 부른다.)

플러그인과 연관된 정적 리소스에 접근하거나플러그인별 환경설정 또는 기타 상태 정보에 접근해 초기화 하기 위한 메소드를 제공한다.

반드시 필요한 것은 아니지만 플러그인 내역서에 플러그인 클래스가 지정되어 있는 경우에 플러그인이 로딩 되었음을 전달 받는  번째 클래스이며또한 종료되었을  전달 받는 마지막 클래스 이다. (그를 이용해서 해당 플러그인의 시작과 끝의 새로운 동작을 추가할  있다.)

 

UI 사용하는 플러그인의 경우 AbstractUIPlugin 상속받아서 사용하고 UI 사용하지 않을 경우에는 Plugin 상속받는다.

AbstractUIPlugin 자동으로 해당 플러그인의 환경설정을 저장하지만 Plugin 종료  stop() 메소드에 별도로 기재해 주어야 한다.

 

 

Public class FavoritesPlugin extends AbstractUIPlugin {

Private static FavoritesPlugin plugin;

 

Public FavoritesPlugin() {

Plugin = this;

}

 

//  메소드는 플러그인 활성화 시점에 호출 된다.

Public void start(BundleContext context) throws Exception {

Super.start(context)

}

 

//  메소드는 플러그인 중단 시점에 호출된다.

Public void stop(BundleContext context) throws Exception {

Super.stop(context);

Plugin = null;

}

 

//공유 인스턴스를 반환한다.

Public static FavoritesPlugin getDefault() {

Return plugin;

}

 

// 주어진 플러그인 상대 경로에 해당하는 이미지 파일에 대한 이미지 디스크립터를 반환한다.

Public static ImageDescriptor getImageDescriptor(String path) {

Return AbstractUIPlugin.imageDescriptorFromPlugin(

"com.qualityeclipse.favorites", path);

}

}

 

플러그인이 활성화될 이클립스 시스템은 다른 클래스를 로딩하기 전에 가정 먼저 플러그인 클래스의 인스턴스를 생성한다.

플러그인의 일생에 걸쳐 하나의 플러그인 클래스인스턴스만 이클립스 시스템에 의해 사용되며  다른 인스턴스는 생성되지 않는다.

 

일반적으로 플러그인 클래스는 정적 필드를 선언해 자신의 싱글턴 객체를 참고하므로 필요할  플러그인을 통해 쉽게 공유할  있다.

 

PDE, PDE Runtime 카테고리를 확장하여 해당 플러그인의 확장점런타임 라이브러리등을 트리형태로 자세히   있다.


태그 : RCP, 플러그인

댓글()

Menifest 파일 설명

RCP/SWT & JFACE|2016. 12. 24. 00:37

Menifest


Dependencies 페이지

1. Menifest 플러그인들의 의존관계를 표시

Require-Bundle: org.eclipse.ui,

Org.eclipse.core.runtime

 

 뜻은 해당 두개의 플러그인에 현재 플러그인이 종속된다는 것을 의미한다.

해당 의미는 컴파일시 결정되는 종속성이 아닌 플러그인의 실행시에 사용되는 종속성이다.

실행  참조해야  플러그인이 어떤 것인지 확인한다클래스 로드  Require-Bundle 명시된 항목  클래스를 찾을  없을 경우 NoClassDefFoundError 예외가 발생한다.

 

Require-Bundle: org.eclipse.ui,

Org.eclipse.core.runtime;resolutoin=optional // 없어도 실행되는것(있어도 좋고 없어도 상관 없음)

 

 

Import-package: org.eclipse.ui.views,

Org.eclipse.runtime.model

 뜻은 종속성을 표현하기도 한다.

Import-Package Require-Bundle 비슷하지만 번들 이름을 지정하는 대신에 패키지 이름을 대신한다.

 그대로 Require-Bundle 제공자를 기재하지만 Import-Pageck 필요한 패키지만을 찝어서 기재한다그렇기 때문에 해당 패키지를 가진 다른 플러그인으로 쉽게 대체가 가능하다.(하지만 제공자를 알기는 어렵다)

 

2. Runtime 페이지

Menifest에서 Runtime 페이지는 Bundle-ClassPath 연관이 있다. Bundle-ClassPath 플러그인과 함께 전달함으로써 플러그인을실행할  사용할 라이브러리가 무엇인지다른 플러그인이 라이브러리의 코드를 참조할  있는지 여부 등을 정의힌다.

Bundle-ClassPath: favirites.jar 라고 plugin.xml 기재할 경우 Menifest.xmlRuntime 영역의 Classpath 기재되고

해당 플러그인의 모든 소스는 해당 라이브러리를 참조하게 된다.

 

3. Extension 페이지

해당 페이지는 현재 플러그인이 시스템의 다른 플러그인에서 이미 제공 제공하는 기능을 어떻게 보완하는지   있다.

<extension point="org.eclipse.ui.view">

 

<category

Name = "Quality Eclipse"

Id = "com.qualityeclipse.favorites">

</category>

 

<view

Name = "Favorites"

Icon = "icons/sample.gif"

Category = "com.qualityeclipse.favorites"

Class="com.qualityeclise.favorites.views.FaoviritesView"

Id = "com.qualityeclise.favorites.views.FaoviritesView">

</view>

</extension>

 

위에 내용을 보게 되면 해당 플러그인은 org.eclipse.ui.view 확장점을 사용해 org.eclipse.ui 플러그인에 대한 확장을 선언한다선언된 확장은 Quality Eclipse 라는 이름의  카테고리를 추가하며  카테고리 안에 Favorites라는 이름의 새로운 뷰를 제공한다.


4. Extension Point 페이지

간편하게  확장점을 정의할  있다확장점은 해당 플러그인이 제공하는 기능을 다른 플러그인이 보완할  있게 한다. (확장점을정의 하지 않으면 다른 플러드인에서 해당 플러그인을 확장하여 사용할  없다.)

 

 

플러그인 ID

  • 플러그인 ID  하나의 플러그인을 식별하기 위해 설계된 . (com.<회사명>.<제품명> 형태로 구현한다.)


'RCP > SWT & JFACE' 카테고리의 다른 글

OSGI & Platform  (0) 2016.12.24
RCP 프레임워크 프로젝트의 플러그인 클래스  (0) 2016.12.24
Menifest 파일 설명  (0) 2016.12.24
Action 클래스 살펴보기  (0) 2016.12.24
rcp프레임워크의 shell객체의 이벤트 처리 설명  (0) 2016.12.24
event doit 설명  (0) 2016.12.24

태그 : jface, menifest, RCP

댓글()

Action 클래스 살펴보기

RCP/SWT & JFACE|2016. 12. 24. 00:35

필요한 액션을 구현하기 위해서 action클래스를 상속받아서 구현한다.


Action 클래스의 메소드


Run() - action 해당하는 이벤트 처리 수행

Action() - 디폴트 생성자

Action(String, ImageDescriptor) - text 필드를 생성하고 이미지를 action 연결하는 생성자

Action(String, int) - TEXT STYLE 필드를 설정하는 생성자.

 

ImageDescriptor 객체는 이미지가 아니고 이미지를 생성하기 위해 필요한 정보를 가진 객체이다.

 

getStyle() - STYLE 필드를 반환한다.

setEnabled(boolean) - ENABLED 필드를 설정한다.

getEnabled() - ENABLED 필드를 반환한다.

setChecked(boolean) - CHECKED 필드를 설정한다.

isChecked(void) - CHECKED 필드를 반환한다.

 

setAccelerator(int) -  코드를 Action 단축키로 설정 //해당 액션에 단축키를 설정하는 부분

getAccelerator() // Action 단축키를 위한  코드 반환

convertAcclerator(int) //단축키를 문자열로 변환

convertAccelerator(String) // 문자열을 단축키로 변환

removeAcceleratorKey(String) // 단축키를 문자열에서 제거

findKeyCode(String) //  이름을 SWT  코드로 변환

findKeyString(int) //  코드를  이름으로 변환

findModifier(String) // 기능키 이름을 기능키 코드로 변환

findModifierString(int) // 기능키 코드를 기능키 이름으로 변환

 

 

addPropertyChangeListener(IPropertyChangeListener) // Action 프로퍼티 변경 리스너를 연결한다.

removePropertyChangeListener(IPropertyChangeListener) // Action 프로퍼티 변경 리스너를 제거한다.

firePropertyChange(Event) // 프로퍼티 변경 이벤트를 발생시킨다.

firePropertyChange(String, Object, Object) // 주어진 객체에 따라 프로퍼티 변경 이벤트를 발생시킨다.

 

//////////HelpListener 컴포넌트와 관련한 정보를 획득하고자 하는 사용자 의도를 처리한다.

setHelpListener(HelpListener) // Action 도움 리스너를 연결한다.

getHelpListener() //action에서 연결된 도움 리스너를 반환한다.

 

setID, setActionDefinitionID(string) //Action 식별자를 설정한다.

setMenuCreator(IMenuCreator) // action 위한 메뉴 생성자를 설정한다.



예제)


public class SlipViewDataExportWithExcel extends

Action {

private static final String ID = "com.wedul.ui.slip.actions.SlipViewDealExcelExportAction";


public SlipViewDataExportWithExcel() {

setId(ID);

setText(Message.msgDealExcelExportLabel);

setToolTipText(Message.msgDealExcelExportLabel);

setImageDescriptor(UiPlugin.getImageDescriptor(IImageKeys.DEAL_EXCEL));


}


@Override

public void run() {

IWorkbenchPage activePage = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();

SlipView currSlipview = (SlipView) activePage.findView(SlipView.ID);


ExcelExportActionNotification notification = new ExcelExportActionNotification(currSlipview.getTableViewer(), currSlipview.getColumnHeader(), currSlipview.getInputData());

SlipViewProcessHandler.getInstance().process(notification);

}

}


'RCP > SWT & JFACE' 카테고리의 다른 글

RCP 프레임워크 프로젝트의 플러그인 클래스  (0) 2016.12.24
Menifest 파일 설명  (0) 2016.12.24
Action 클래스 살펴보기  (0) 2016.12.24
rcp프레임워크의 shell객체의 이벤트 처리 설명  (0) 2016.12.24
event doit 설명  (0) 2016.12.24
JFace TreeViewer설명  (0) 2016.12.24

댓글()