在gmf中如何刷新当前界面中的元素呢,看部主要分代码:
IEditorReference[] editorReferences = PlatformUI.getWorkbench()
.getActiveWorkbenchWindow().getActivePage()
.getEditorReferences();
IEditorPart editorPart = null;
IEditorInput editorInput = null;
for (IEditorReference editorReference : editorReferences)
{
if (editorReference.getId().equals(
"Jonas.diagram.part.JonasDiagramEditorID"))
{
editorPart = editorReference.getEditor(false);
editorInput = editorPart.getEditorInput();
String projectPath = EditorUtils
.getProjectPathFromURIEditorInput((URIEditorInput) editorInput);
if (!projectPath.equals(project.getLocation().toString()))
{
continue;
}
JonasDiagramEditor editor = (JonasDiagramEditor) editorPart;
ViewEditPart view = (ViewEditPart) editor.getDiagramEditPart();
for (Object childEditPart : view.getChildren())
{
refreshControl((BaseEditPart) childEditPart);
}
}
}
private void refreshControl(BaseEditPart editPart)
{
EObject obj = editPart.resolveSemanticElement();
if (obj instanceof Widgetcommon)
{
Widgetcommon control = (Widgetcommon) obj;
//重新为控件设置,刷新界面对象
BaseFigure figure = (BaseFigure) editPart.getPrimaryFigure();
if (control.getNormalskin() != null)
{
Image image = EditorUtils.getSKinGrighce(control.getWidth(),
control.getHeight(),
((Widgetcommon) obj).getNormalskin(),true);
if (image != null)
{
figure.setBackImg(image);
}
}
if (control instanceof Text && ((Text) control).getText() != null)
{
Font font = EditorUtils.getFontStyle(editPart);
if (font != null)
{
figure.setFont(font);
}
String text = EditorUtils.getTextValue(editPart,
((Text) obj).getText());
figure.setText(text);
editPart.setFgColor();
}
figure.repaint();
}
if (obj instanceof Container || obj instanceof ItemContainer)
{
//刷新子控件
for (Object childEditPart : editPart.getChildren())
{
refreshControl((BaseEditPart) childEditPart);
}
}
}
IEditorReference[] editorReferences = PlatformUI.getWorkbench()
.getActiveWorkbenchWindow().getActivePage()
.getEditorReferences();
IEditorPart editorPart = null;
IEditorInput editorInput = null;
for (IEditorReference editorReference : editorReferences)
{
if (editorReference.getId().equals(
"Jonas.diagram.part.JonasDiagramEditorID"))
{
editorPart = editorReference.getEditor(false);
editorInput = editorPart.getEditorInput();
String projectPath = EditorUtils
.getProjectPathFromURIEditorInput((URIEditorInput) editorInput);
if (!projectPath.equals(project.getLocation().toString()))
{
continue;
}
JonasDiagramEditor editor = (JonasDiagramEditor) editorPart;
ViewEditPart view = (ViewEditPart) editor.getDiagramEditPart();
for (Object childEditPart : view.getChildren())
{
refreshControl((BaseEditPart) childEditPart);
}
}
}
private void refreshControl(BaseEditPart editPart)
{
EObject obj = editPart.resolveSemanticElement();
if (obj instanceof Widgetcommon)
{
Widgetcommon control = (Widgetcommon) obj;
//重新为控件设置,刷新界面对象
BaseFigure figure = (BaseFigure) editPart.getPrimaryFigure();
if (control.getNormalskin() != null)
{
Image image = EditorUtils.getSKinGrighce(control.getWidth(),
control.getHeight(),
((Widgetcommon) obj).getNormalskin(),true);
if (image != null)
{
figure.setBackImg(image);
}
}
if (control instanceof Text && ((Text) control).getText() != null)
{
Font font = EditorUtils.getFontStyle(editPart);
if (font != null)
{
figure.setFont(font);
}
String text = EditorUtils.getTextValue(editPart,
((Text) obj).getText());
figure.setText(text);
editPart.setFgColor();
}
figure.repaint();
}
if (obj instanceof Container || obj instanceof ItemContainer)
{
//刷新子控件
for (Object childEditPart : editPart.getChildren())
{
refreshControl((BaseEditPart) childEditPart);
}
}
}