/**
* @version $Id: TemplateAddHandler.java 1839 2014-04-16 02:33:51Z yukihiro-kinjyo $
*
* 2012/11/21 11:45:00
* @author s.takuro
*
* Copyright 2011-2014 TIDAコンソーシアム All Rights Reserved.
*/
package com.tida_okinawa.corona.ui.editors.template;
import org.eclipse.core.commands.AbstractHandler;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.handlers.HandlerUtil;
import com.tida_okinawa.corona.correction.parsing.model.PatternRecord;
import com.tida_okinawa.corona.ui.editors.pattern.PatternDicEditor;
/**
* @author s.takuro
* #187 構文パターン自動生成
*/
public class TemplateAddHandler extends AbstractHandler {
private PatternRecord selectedPattern = null;
@Override
public Object execute(ExecutionEvent event) throws ExecutionException {
Shell shell = HandlerUtil.getActiveShell(event);
IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
IStructuredSelection ss = (IStructuredSelection) page.getSelection();
Object object = ss.getFirstElement();
if (object instanceof PatternRecord) {
/* ダイアログ表示 */
TemplateModifyDialog dialog = new TemplateModifyDialog(shell);
dialog.setExist(false);
dialog.setTreeContentProvider(new TemplateTreeContentProvider());
dialog.setTreeLabelProvider(new TemplateTreeLabelProvider());
dialog.setInput(selectedPattern);
if (dialog.open() == Dialog.OK) {
return null;
}
}
return null;
}
@Override
public boolean isEnabled() {
if (PlatformUI.getWorkbench().getActiveWorkbenchWindow() == null) {
return false;
}
/* パターンの先頭を選択している場合のみ有効(親を持たなければtrue) */
IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
IEditorPart editor = page.getActiveEditor();
if (editor instanceof PatternDicEditor) {
IStructuredSelection ss = (IStructuredSelection) page.getSelection();
Object object = ss.getFirstElement();
if (object instanceof PatternRecord) {
this.selectedPattern = (PatternRecord) object;
return true;
}
}
return false;
}
}