use of org.eclipse.wst.xsd.ui.internal.text.XSDModelAdapter in project webtools.sourceediting by eclipse.
the class InternalXSDMultiPageEditor method setInputToGraphicalViewer.
protected void setInputToGraphicalViewer(IDocument newDocument) {
IStructuredModel structuredModel = null;
try {
// only set input if structured model already exists
// (meaning source editor is already managing the model)
structuredModel = StructuredModelManager.getModelManager().getExistingModelForRead(newDocument);
if ((structuredModel != null) && (structuredModel instanceof IDOMModel)) {
Document doc = ((IDOMModel) structuredModel).getDocument();
if (doc != null) {
XSDModelAdapter modelAdapter = XSDModelAdapter.lookupOrCreateModelAdapter(doc);
if (// Assert should not be null
modelAdapter != null) {
modelAdapter.setSchema(xsdSchema);
xsdSchema = modelAdapter.resetSchema(doc);
model = (IModel) XSDAdapterFactory.getInstance().adapt(xsdSchema);
}
}
}
} catch (Exception e) {
} finally {
if (structuredModel != null) {
structuredModel.releaseFromRead();
}
}
}
use of org.eclipse.wst.xsd.ui.internal.text.XSDModelAdapter in project webtools.sourceediting by eclipse.
the class XSDHyperlinkDetector method getXSDSchema.
/**
* Gets the xsd schema from document
*
* @param document
* @return XSDSchema or null of one does not exist yet for document
*/
private XSDSchema getXSDSchema(IDocument document) {
XSDSchema schema = null;
IStructuredModel model = StructuredModelManager.getModelManager().getExistingModelForRead(document);
if (model != null) {
try {
if (model instanceof IDOMModel) {
IDOMDocument domDoc = ((IDOMModel) model).getDocument();
if (domDoc != null) {
XSDModelAdapter modelAdapter = (XSDModelAdapter) domDoc.getExistingAdapter(XSDModelAdapter.class);
/*
* ISSUE: Didn't want to go through initializing schema if it does
* not already exist, so just attempted to get existing adapter. If
* doesn't exist, just don't bother working.
*/
if (modelAdapter != null)
schema = modelAdapter.getSchema();
}
}
} finally {
model.releaseFromRead();
}
}
return schema;
}
use of org.eclipse.wst.xsd.ui.internal.text.XSDModelAdapter in project webtools.sourceediting by eclipse.
the class InternalXSDMultiPageEditor method doSaveAs.
/* (non-Javadoc)
* @see org.eclipse.ui.part.EditorPart#doSaveAs()
*/
public void doSaveAs() {
// When performing a save as, the document changes. Our model state listeners should listen
// to the new document.
// First get the current document
IDocument currentDocument = getDocument();
XSDModelAdapter modelAdapter = null;
IDOMDocument doc = null;
if (currentDocument != null) {
IStructuredModel structuredModel = StructuredModelManager.getModelManager().getExistingModelForRead(currentDocument);
if (structuredModel != null) {
try {
if ((structuredModel != null) && (structuredModel instanceof IDOMModel)) {
// Get the associated IDOMDocument model
doc = ((IDOMModel) structuredModel).getDocument();
// and now get our adapter that listens to DOM changes
if (doc != null) {
modelAdapter = (XSDModelAdapter) doc.getExistingAdapter(XSDModelAdapter.class);
}
}
} finally {
structuredModel.releaseFromRead();
}
}
}
IEditorInput editorInput = structuredTextEditor.getEditorInput();
// perform save as
structuredTextEditor.doSaveAs();
// See AbstractDecoratedTextEditor's performSaveAs
if (editorInput != structuredTextEditor.getEditorInput()) {
setInput(structuredTextEditor.getEditorInput());
setPartName(structuredTextEditor.getEditorInput().getName());
getCommandStack().markSaveLocation();
// Now do the clean up on the old document
if (modelAdapter != null) {
// clear out model adapter
modelAdapter.clear();
modelAdapter = null;
}
}
}
use of org.eclipse.wst.xsd.ui.internal.text.XSDModelAdapter in project webtools.sourceediting by eclipse.
the class InternalXSDMultiPageEditor method dispose.
public void dispose() {
IStructuredModel structuredModel = null;
XSDModelAdapter modelAdapter = null;
IDOMDocument doc = null;
IDocument idoc = structuredTextEditor.getDocumentProvider().getDocument(getEditorInput());
if (idoc != null) {
structuredModel = StructuredModelManager.getModelManager().getExistingModelForRead(idoc);
if ((structuredModel != null) && (structuredModel instanceof IDOMModel)) {
try {
if ((structuredModel != null) && (structuredModel instanceof IDOMModel)) {
doc = ((IDOMModel) structuredModel).getDocument();
if (doc != null) {
modelAdapter = (XSDModelAdapter) doc.getExistingAdapter(XSDModelAdapter.class);
if (modelAdapter != null) {
doc.getModel().removeModelStateListener(modelAdapter.getModelReconcileAdapter());
doc.removeAdapter(modelAdapter.getModelReconcileAdapter());
doc.removeAdapter(modelAdapter);
modelAdapter.clear();
modelAdapter = null;
}
}
}
} finally {
structuredModel.releaseFromRead();
}
}
}
if (fOutlinePage != null) {
// }
if (fOutlineListener != null) {
fOutlinePage.removeSelectionChangedListener(fOutlineListener);
}
}
getSelectionManager().removeSelectionChangedListener(fXSDSelectionListener);
XSDEditorPlugin.getDefault().getPreferenceStore().removePropertyChangeListener(xsdPreferenceStoreListener);
xsdPreferenceStoreListener = null;
super.dispose();
}
use of org.eclipse.wst.xsd.ui.internal.text.XSDModelAdapter in project webtools.sourceediting by eclipse.
the class XSDTabbedPropertySheetPage method selectionChanged.
/* (non-Javadoc)
* @see org.eclipse.ui.ISelectionListener#selectionChanged(org.eclipse.ui.IWorkbenchPart, org.eclipse.jface.viewers.ISelection)
*/
public void selectionChanged(IWorkbenchPart part, ISelection selection) {
Object selected = ((IStructuredSelection) selection).getFirstElement();
if (selected instanceof XSDBaseAdapter) {
XSDBaseAdapter adapter = (XSDBaseAdapter) selected;
if (oldSelection != null) {
oldSelection.unregisterListener(this);
if (oldSelection instanceof XSDElementDeclarationAdapter) {
XSDElementDeclaration elem = (XSDElementDeclaration) ((XSDElementDeclarationAdapter) oldSelection).getTarget();
if (elem.getContainer() != null) {
Adapter adap = XSDAdapterFactory.getInstance().adapt(elem.getContainer());
if (adap instanceof XSDParticleAdapter) {
XSDParticleAdapter particleAdapter = (XSDParticleAdapter) adap;
particleAdapter.unregisterListener(this);
}
}
if (elem.isElementDeclarationReference()) {
XSDElementDeclarationAdapter resolvedElementAdapter = (XSDElementDeclarationAdapter) XSDAdapterFactory.getInstance().adapt(elem.getResolvedElementDeclaration());
resolvedElementAdapter.unregisterListener(this);
}
}
}
if (adapter instanceof XSDElementDeclarationAdapter) {
XSDElementDeclaration elem = (XSDElementDeclaration) ((XSDElementDeclarationAdapter) adapter).getTarget();
Adapter adap = XSDAdapterFactory.getInstance().adapt(elem.getContainer());
if (adap instanceof XSDParticleAdapter) {
XSDParticleAdapter particleAdapter = (XSDParticleAdapter) adap;
particleAdapter.registerListener(this);
}
if (elem.isElementDeclarationReference()) {
XSDElementDeclarationAdapter resolvedElementAdapter = (XSDElementDeclarationAdapter) XSDAdapterFactory.getInstance().adapt(elem.getResolvedElementDeclaration());
resolvedElementAdapter.registerListener(this);
}
} else if (adapter instanceof XSDAttributeUseAdapter) {
XSDAttributeUseAdapter attributeUse = (XSDAttributeUseAdapter) adapter;
XSDAttributeUse xsdAttrUse = (XSDAttributeUse) attributeUse.getTarget();
adapter = (XSDBaseAdapter) XSDAdapterFactory.getInstance().adapt(xsdAttrUse.getAttributeDeclaration());
}
adapter.registerListener(this);
oldSelection = adapter;
Object model = adapter.getTarget();
if (xsdModelAdapter != null && xsdModelAdapter.getModelReconcileAdapter() != null) {
xsdModelAdapter.getModelReconcileAdapter().removeListener(internalNodeAdapter);
}
Element element = ((XSDConcreteComponent) adapter.getTarget()).getElement();
if (element != null) {
xsdModelAdapter = XSDModelAdapter.lookupOrCreateModelAdapter(element.getOwnerDocument());
}
if (xsdModelAdapter != null && xsdModelAdapter.getModelReconcileAdapter() != null) {
xsdModelAdapter.getModelReconcileAdapter().addListener(internalNodeAdapter);
}
if (model instanceof XSDConcreteComponent) {
selection = new StructuredSelection(model);
}
super.selectionChanged(part, selection);
return;
}
super.selectionChanged(part, selection);
}
Aggregations