2013-12-12 2 views
1

Я хочу открыть диалоговое окно, когда пользователь дважды нажимает на определенные типы файлов (например: .pc, .mn и т. Д.) В Project Explorer.Двойной щелчок на ресурсе рабочей области eclipse

Я не знаю, правильно ли это делается или нет. Я создал фиктивный редактор (расширив org.eclipse.ui.editors.text.TextEditor) для этих типов файлов и в методе init, я создал диалог и открыл его.

Но после того, как пользователь закроет диалоговое окно (нажав кнопку «ОК» или «Отмена»). Редактор открывается с ошибкой, как показано ниже. enter image description here

Мой код в методе инициализации

@Override 
public void init(IEditorSite site, IEditorInput input) throws PartInitException { 

    FileEditorInput fileEdi = null; 
    if (input instanceof FileEditorInput) { 
     fileEdi = (FileEditorInput)input; 
    } 
    ABCTitleAreaDialog dia = new ABCTitleAreaDialog(site.getShell(), fileEdi.getFile().getLocation().toString(), 
      null); 
    dia.setHelpAvailable(false); 
    if (Window.OK == dia.open()) { 
     Display.getDefault().asyncExec(new Runnable() { 

      @Override 
      public void run() { 
       //Code to open Perspective 
      } 
     }); 
    } 
    IWorkbenchPart part = site.getPart(); 
    if (PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().closeEditor((IEditorPart)part, false)) { 
     System.out.println("closed the editor"); 
    } 
    throw new PartInitException("Error opening editor"));//$NON-NLS-1$ 
} 

Можно ли отменить/Прервать процесс создания редактора, так что я могу избежать открытия редактора ошибок часть.

Любое альтернативное решение также подходит для меня.

ответ

0

Вместо того, чтобы бросить PartInitException вы могли бы использовать asyncExec, чтобы закрыть редактор:

@Override 
public void init(final IEditorSite site, final IEditorInput input) 
{ 
    setSite(site); 
    setInput(input); 

    Display.getCurrent().asyncExec(new Runnable() 
    { 
    @Override 
    public void run() 
    { 
     site.getPage().closeEditor(Editor.this, false); 
    } 
    }); 
} 

Edit: Измененный, чтобы показать метод полной INIT

+0

Испытано не работает. –

+0

@ChandrayyaGK Работал для меня. Что происходит? –

+0

Редактор ошибок снова открывается с сообщением: «Ошибка инициализации редактора: . Сайт неверен». –

0

Вы, вероятно, отсутствуют следующие вызовы в начале вашего инициализации (...) - метод:

super.setInput(input); 
super.setSite(site); 

Enha ncement:

Вы должны рассмотреть возможность использования настраиваемого действия с помощью точек расширения org.eclipse.ui.navigator.navigatorContent и org.eclipse.ui.navigator.viewer внести новый ResourceContent в org.eclipse. ui.navigator.ProjectExplorer. Таким образом, вы могли бы назвать действие, которое открывает ваш диалог и редактор в зависимости от состояния выхода из диалогового окна в

Дальнейшее чтение см

Смежные вопросы