Закрытие разработки плагина Eclipse Сброс перспективы Eclipse - PullRequest
0 голосов
/ 24 февраля 2011

Я написал плагин для Eclipse, который представляет собой перспективу с некоторыми представлениями.У меня проблемы с переустановкой перспективы при закрытии Eclipse.Я дошел до того, что я могу выпустить все вещи в представлениях и скрыть их, но когда вы снова запустите Eclipse, представления, которые я спрятал, вернулись.Как получить перспективу для сброса, когда пользователь закрывает Eclipse?

1 Ответ

1 голос
/ 28 августа 2011

Я использовал org.eclipse.ui.PerspectiveAdapter для отслеживания перспектив. Каждый раз, когда открывается перспектива, проверяйте что-то и принять меры, чтобы открыть или закрыть определенные виды.

Я регистрирую PerspectiveAdapter в Активаторе. начало (контекст BundleContext) метод вызова события.

Мой код активации breif выглядит следующим образом.

/*
 * (non-Javadoc)
 * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
 */
public void start(BundleContext context) throws Exception {
    super.start(context);
    plugin = this;
    .......
    ll = new fomomentumplugin.perspectives.LicenseListener();
    IWorkbench wbench = PlatformUI.getWorkbench();
     IWorkbenchWindow window =  wbench.getActiveWorkbenchWindow() ;
     window.addPerspectiveListener(ll);
     ...........
}


and 

public class LicenseListener extends PerspectiveAdapter {

public  void perspectiveOpened(IWorkbenchPage page, IPerspectiveDescriptor perspective) {
    String componentName = "FOMomentum";
    if(perspective.getId().equals("org.softools.FOMomentumPLugin.FO")){
        if(Activator.checkLicense == null || !Activator.checkLicense.isValidLicense(componentName)){
            System.out.println("org.softools.FOMomentumPLugin.FO perspective Activated with no license found message !");
        //page.resetPerspective();
            hideViews(page);
        }
        else showViews(page);
    }
}

public  void perspectiveActivated(IWorkbenchPage page, IPerspectiveDescriptor perspective) {
    String componentName = "FOMomentum";
    if(perspective.getId().equals("org.softools.FOMomentumPLugin.FO")){
        if(Activator.checkLicense == null || !Activator.checkLicense.isValidLicense(componentName)){
            System.out.println("org.softools.FOMomentumPLugin.FO perspective Activated with no license found message !");
        //page.resetPerspective();
            hideViews(page);
        }
        else showViews(page);
    }

}

private void hideViews(IWorkbenchPage page){
    IViewPart momentum = page.findView("fomomentumplugin.views.FOMomentumView") ;
        if(momentum != null){
            ((fomomentumplugin.views.FOMomentumView)momentum).removeCalendarCombo();
            page.hideView(momentum);
        }

    IViewPart momentumDetail = page.findView("fomomentumplugin.views.FOMomentumDetailView") ;
    page.hideView(momentumDetail);
    IViewPart movingAverageview = page.findView("FOCallCandlebarView") ;
    page.hideView(movingAverageview);
    IViewPart priceVolumeView = page.findView("FOMomentumPLugin.FOPutCandlebarView") ;
    page.hideView(priceVolumeView);
}

private void showViews(IWorkbenchPage page){
    try {
        page.showView("fomomentumplugin.views.FOMomentumView");
        page.showView("fomomentumplugin.views.FOMomentumDetailView");
        page.showView("FOCallCandlebarView");
        page.showView("FOMomentumPLugin.FOPutCandlebarView");
    } catch (PartInitException e) {
        e.printStackTrace();
    }       
}

}

Я надеюсь, что это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...