'remove quick access'에 해당되는 글 1건

  1. 2013.08.25 Eclipse RCP에서 Quick Access 없애기

Eclipse RCP를 개발하면서 Target을 3.6 이하 버전으로 사용하다가 3.7 이후 버전을 사용하도록 변경한다면 화면 상단 툴바에 Quick Access가 무조건 나타나면서 원치 않는 UI를 노출 시키는 문제가 발생합니다.  


Quick Access 노출을 조정할 수 있는 액션이나 메뉴가 없는 상태입니다. 4.4 버전부터는 만든다는 것 같지만 현재까진 해결책이 없네요.



Quick Access를 없애기 위한 해결책을 보도록 하겠습니다. 


1. 자신의 RCP에 plugin.xml에서 다음 패키지 의존성을 추가한다.

    • org.eclipse.e4.ui.model.workbench


2. ApplicationWorkbenchWindowAdvisor.java 파일에 다음 코드를 추가한다.

package com.billy.snippet.quickaccess;

import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.e4.ui.model.application.ui.basic.MTrimBar;
import org.eclipse.e4.ui.model.application.ui.basic.MTrimElement;
import org.eclipse.swt.graphics.Point;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.application.ActionBarAdvisor;
import org.eclipse.ui.application.IActionBarConfigurer;
import org.eclipse.ui.application.IWorkbenchWindowConfigurer;
import org.eclipse.ui.application.WorkbenchWindowAdvisor;
import org.eclipse.ui.internal.WorkbenchWindow;
import org.eclipse.ui.progress.UIJob;

public class ApplicationWorkbenchWindowAdvisor extends WorkbenchWindowAdvisor {

    public ApplicationWorkbenchWindowAdvisor(IWorkbenchWindowConfigurer configurer) {
        super(configurer);
    }

    public ActionBarAdvisor createActionBarAdvisor(IActionBarConfigurer configurer) {
        return new ApplicationActionBarAdvisor(configurer);
    }
    
    public void preWindowOpen() {
        IWorkbenchWindowConfigurer configurer = getWindowConfigurer();
        configurer.setInitialSize(new Point(600, 400));
        configurer.setShowCoolBar(true);
        configurer.setShowStatusLine(false);

        // This code
        hideQuickAccess();
    }

	private void hideQuickAccess() {
		UIJob job = new UIJob("Hide quick access") {
			@Override
			public IStatus runInUIThread(IProgressMonitor monitor) {
				IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
				if (window instanceof WorkbenchWindow) {
					MTrimBar topTrim = ((WorkbenchWindow) window).getTopTrim();
					for (MTrimElement element : topTrim.getChildren()) {
						if ("SearchField".equals(element.getElementId())) {
							element.setVisible(false);
							element.setToBeRendered(false);;
							break;
						}
					}
				}
				return Status.OK_STATUS;
			}
		};
		
		job.schedule();
	}
    
}


아래와 같이 Quick Access가 없어진 것을 보실 수 있습니다.



샘플 프로젝트 코드는 아래에서 받으면 됩니다.

removeQuickAccess.zip


Tip


Quick Access를 지우니, Toolbar layout이 흐트러 질때는 다음을 확인합니다.

    • 기여한 Toolbar action이 'main'에 추가되었나요?


protected void fillCoolBar(ICoolBarManager coolBar) {
	IToolBarManager toolbar = new ToolBarManager(SWT.FLAT | SWT.RIGHT);
	coolBar.add(new ToolBarContributionItem(toolbar, "main"));   // main
        //coolBar.add(toolbar);
	toolbar.add(openViewAction);
	toolbar.add(messagePopupAction);
}


위와 같이 main이 아닌 Toolbar를 단순히 coolBar에 추가하게 되면, Layout이 흐트러집니다. 


Posted by 빌리 :