gmf中刷新界面元素

在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);
            }
        }
    }

你可能感兴趣的:(刷新)