/**
* @version $Id: ResultSynonymEditor.java 1839 2014-04-16 02:33:51Z yukihiro-kinjyo $
*
* 2011/09/12 01:36:11
* @author imai-yoshikazu
*
* Copyright 2011-2014 TIDAコンソーシアム All Rights Reserved.
*/
package com.tida_okinawa.corona.ui.editors;
import org.eclipse.jface.viewers.ILabelProviderListener;
import org.eclipse.jface.viewers.ITableColorProvider;
import org.eclipse.jface.viewers.ITableLabelProvider;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.StyleRange;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.ui.views.properties.IPropertySheetPage;
import org.eclipse.ui.views.properties.PropertySheetPage;
import com.tida_okinawa.corona.correction.morphem.SyntaxStructure;
import com.tida_okinawa.corona.internal.ui.component.CompositeUtil;
import com.tida_okinawa.corona.io.model.MorphemeElement;
/**
* ゆらぎ・同義語補正結果表示
*
* {@link ResultMorphemeEditor} に 置き換え前の表記の列を追加
*
* @author imai
*
*/
public class ResultSynonymEditor extends ResultMorphemeEditor {
/**
* エディターID。
* この変数はResultMorphemeEditorの同盟変数を意図的にシャドーイングしている。
*/
@SuppressWarnings("hiding")
public static final String EDITOR_ID = "com.tida_okinawa.corona.ui.editor.synonymresulteditor";
@Override
public void createPartControl(Composite parent) {
super.createPartControl(parent);
// 置き換え前の表記の列を追加
CompositeUtil.createColumn(morphemeTreeViewer, "同義語", 160);
final ITableLabelProvider orgProvider = (ITableLabelProvider) morphemeTreeViewer.getLabelProvider();
morphemeTreeViewer.setLabelProvider(new ColorTableLabelProvider() {
@Override
public void removeListener(ILabelProviderListener listener) {
orgProvider.removeListener(listener);
}
@Override
public boolean isLabelProperty(Object element, String property) {
return orgProvider.isLabelProperty(element, property);
}
@Override
public void dispose() {
orgProvider.dispose();
}
@Override
public void addListener(ILabelProviderListener listener) {
orgProvider.addListener(listener);
}
@Override
public String getColumnText(Object element, int columnIndex) {
String text = orgProvider.getColumnText(element, columnIndex);
if (element instanceof MorphemeElement) {
MorphemeElement morphme = (MorphemeElement) element;
if (columnIndex == 7) {
text = morphme.getOriginalHyouki();
}
}
return text;
}
@Override
public Image getColumnImage(Object element, int columnIndex) {
return orgProvider.getColumnImage(element, columnIndex);
}
});
}
private static class ColorTableLabelProvider extends TableLabelProvider implements ITableColorProvider {
public ColorTableLabelProvider() {
}
@Override
public Color getForeground(Object element, int columnIndex) {
if (!(element instanceof MorphemeElement)) {
return null;
}
MorphemeElement morpheme = (MorphemeElement) element;
if (morpheme.getOriginalHyouki() != null) {
if (columnIndex == 1) {
return foreground;
}
}
return null;
}
@Override
public Color getBackground(Object element, int columnIndex) {
return null;
}
}
/**
* オレンジ
*/
static final Color foreground = new Color(null, 255, 130, 0);
@Override
void setResultText(SyntaxStructure ss) {
String text = ss.getText();
resultText.setText(text);
int fromIndex = 0;
for (MorphemeElement element : ss.getMorphemeElemsnts()) {
if (element.getOriginalHyouki() != null) {
String hyouki = element.getHyouki();
int start = text.indexOf(element.getHyouki(), fromIndex);
int length = hyouki.length();
StyleRange style = new StyleRange(start, length, foreground, null);
style.fontStyle = SWT.BOLD;
resultText.setStyleRange(style);
fromIndex = start + length;
}
}
}
@Override
public Object getAdapter(@SuppressWarnings("rawtypes") Class adapter) {
if (adapter.equals(IPropertySheetPage.class)) {
return new PropertySheetPage();
}
return super.getAdapter(adapter);
}
}