/**
* @version $Id: ResultPatternEditor.java 1839 2014-04-16 02:33:51Z yukihiro-kinjyo $
*
* 2011/09/02 21:49:11
* @author imai
*
* Copyright 2011-2014 TIDAコンソーシアム All Rights Reserved.
*/
package com.tida_okinawa.corona.ui.editors;
import java.util.HashSet;
import java.util.Set;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.jface.dialogs.IPageChangedListener;
import org.eclipse.jface.dialogs.PageChangedEvent;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.ISelectionProvider;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.forms.editor.FormEditor;
import org.eclipse.ui.forms.editor.IFormPage;
import org.eclipse.ui.views.properties.IPropertySheetPage;
import org.eclipse.ui.views.properties.PropertySheetPage;
/**
* 構文解析(パターンマッチング)結果ビュー
*
* @author imai
*/
public class ResultPatternEditor extends FormEditor {
/** エディターID */
public static final String EDITOR_ID = "com.tida_okinawa.corona.ui.editor.resultpatterneditor";
ResultPatternPage page1;
private ResultPatternPage2 page2;
private Set<ISelectionChangedListener> selChangeListener = new HashSet<ISelectionChangedListener>();
@Override
protected void addPages() {
}
@Override
protected void createPages() {
ResultPatternEditorInput input = (ResultPatternEditorInput) getEditorInput();
page1 = new ResultPatternPage(this);
page2 = new ResultPatternPage2(this, new ResultPatternEditorInput2(input.getName(), input.claimWorkPattern));
try {
addPage(page1);
addPage(page2);
} catch (PartInitException e) {
e.printStackTrace();
}
super.createPages();
getSite().setSelectionProvider(new ISelectionProvider() {
@Override
public void addSelectionChangedListener(ISelectionChangedListener listener) {
int index = getActivePage();
if (index > -1) {
if (pages.get(index) instanceof ResultPatternPage) {
ResultPatternPage activePage = (ResultPatternPage) pages.get(index);
if (activePage.resultTreeViewer != null) {
activePage.resultTreeViewer.addSelectionChangedListener(listener);
}
}
}
selChangeListener.add(listener);
}
@Override
public ISelection getSelection() {
ISelection result = null;
int index = getActivePage();
if (index < 0)
return null;
IFormPage page = getActivePageInstance();
if (page instanceof ResultPatternPage2) {
result = ((ResultPatternPage2) page).resultTreeViewer.getSelection();
} else if (page instanceof ResultPatternPage) {
result = ((ResultPatternPage) page).resultTreeViewer.getSelection();
}
return result;
}
@Override
public void removeSelectionChangedListener(ISelectionChangedListener listener) {
}
@Override
public void setSelection(ISelection selection) {
}
});
this.addPageChangedListener(new IPageChangedListener() {
@Override
public void pageChanged(PageChangedEvent event) {
if (event.getSelectedPage() instanceof ResultPatternPage) {
for (ISelectionChangedListener l : selChangeListener) {
((ResultPatternPage) event.getSelectedPage()).resultTreeViewer.removeSelectionChangedListener(l);
((ResultPatternPage) event.getSelectedPage()).resultTreeViewer.addSelectionChangedListener(l);
}
}
}
});
}
/* ****************************************
* 保存
*/
@Override
public void doSave(IProgressMonitor monitor) {
}
@Override
public void doSaveAs() {
}
@Override
public boolean isDirty() {
return false;
}
@Override
public boolean isSaveAsAllowed() {
return false;
}
@Override
public String getPartName() {
return getEditorInput().getName();
}
@Override
public Object getAdapter(@SuppressWarnings("rawtypes") Class adapter) {
if (adapter.equals(IPropertySheetPage.class)) {
return new PropertySheetPage();
}
return super.getAdapter(adapter);
}
}