private boolean isReadOnly() { IBuildModel model = getBuildModel(); if (model instanceof IEditable) return !((IEditable) model).isEditable(); return true; }
@Override protected void flushModel(IDocument doc) { // if model is dirty, flush its content into // the document so that the source editor will // pick up the changes. if (!(getModel() instanceof IEditable)) return; IEditable editableModel = (IEditable) getModel(); if (editableModel.isEditable() == false) return; if (editableModel.isDirty() == false) return; try (StringWriter swriter = new StringWriter(); PrintWriter writer = new PrintWriter(swriter)) { editableModel.save(writer); writer.flush(); String content = swriter.toString(); content = AbstractModel.fixLineDelimiter(content, (IFile) ((IModel) getModel()).getUnderlyingResource()); doc.set(content); } catch (IOException e) { PDEPlugin.logException(e); } }
@Override protected void flushModel(IDocument doc) { // if model is dirty, flush its content into // the document so that the source editor will // pick up the changes. if (!(getModel() instanceof IEditable)) return; IEditable editableModel = (IEditable) getModel(); if (editableModel.isDirty() == false) return; try (StringWriter swriter = new StringWriter(); PrintWriter writer = new PrintWriter(swriter)) { editableModel.save(writer); writer.flush(); String content = swriter.toString(); content = AbstractModel.fixLineDelimiter(content, (IFile) ((IModel) getModel()).getUnderlyingResource()); doc.set(content); } catch (IOException e) { PDEPlugin.logException(e); } }
public void flushEditorInput() { if (!fEditOperations.isEmpty()) { IDocument doc = fDocumentProvider.getDocument(fEditorInput); fDocumentProvider.aboutToChange(fEditorInput); flushModel(doc); fDocumentProvider.changed(fEditorInput); fValidated = false; } else if ((fModel instanceof IEditable) && ((IEditable) fModel).isDirty()) { // When text edit operations are made that cancel each other out, // the editor is not undirtied // e.g. Extensions page: Move an element up and then move it down // back in the same position: Bug # 197831 ((IEditable) fModel).setDirty(false); } }
private void infoModified() { IFeatureModel featureModel = (IFeatureModel) getPage().getModel(); if (fLicenseFeatureIDText.getText().length() == 0 && fLicenseFeatureVersionText.getText().length() > 0) { fIgnoreChange = true; fLicenseFeatureVersionText.setText(""); //$NON-NLS-1$ fIgnoreChange = false; } if (!fIgnoreChange && featureModel instanceof IEditable) { ((IEditable) featureModel).setDirty(true); markDirty(); } }
@Override protected void flushModel(IDocument doc) { // if model is dirty, flush its content into // the document so that the source editor will // pick up the changes. if (!(getModel() instanceof IEditable)) return; IEditable editableModel = (IEditable) getModel(); if (editableModel.isEditable() == false) return; if (editableModel.isDirty() == false) return; try (StringWriter swriter = new StringWriter(); PrintWriter writer = new PrintWriter(swriter)) { editableModel.save(writer); writer.flush(); String content = swriter.toString(); content = AbstractModel.fixLineDelimiter(content, (IFile) ((IModel) getModel()).getUnderlyingResource()); doc.set(content); } catch (IOException e) { PDEPlugin.logException(e); } }
@Override protected void flushModel(IDocument doc) { if (!(getModel() instanceof IEditable)) return; IEditable editableModel = (IEditable) getModel(); if (editableModel.isDirty() == false) return; try (StringWriter swriter = new StringWriter(); PrintWriter writer = new PrintWriter(swriter)) { editableModel.save(writer); writer.flush(); String content = swriter.toString(); content = AbstractModel.fixLineDelimiter(content, (IFile) ((IModel) getModel()).getUnderlyingResource()); doc.set(content); } catch (IOException e) { PDEPlugin.logException(e); } }
@Override protected boolean synchronizeModel(IDocument doc) { Schema schema = (Schema) getModel(); if (schema == null) { // if model is null try to recreate it create(); return getModel() == null; } String text = doc.get(); try (InputStream stream = new ByteArrayInputStream(text.getBytes(StandardCharsets.UTF_8))) { schema.reload(stream); if (schema instanceof IEditable) { ((IEditable) schema).setDirty(false); } } catch (IOException e) { } return true; }
@Override protected void flushModel(IDocument doc) { // if model is dirty, flush its content into // the document so that the source editor will // pick up the changes. if (!(getModel() instanceof IEditable)) return; IEditable editableModel = (IEditable) getModel(); if (editableModel.isDirty() == false) return; try (StringWriter swriter = new StringWriter(); PrintWriter writer = new PrintWriter(swriter)) { editableModel.save(writer); writer.flush(); String content = swriter.toString(); if (getInput() instanceof IFileEditorInput) { // If we are working with a file in the workspace, correct line delimeters based on workspace/file settings IFile file = ((IFileEditorInput) getInput()).getFile(); content = AbstractModel.fixLineDelimiter(content, file); } doc.set(content); } catch (IOException e) { PDEPlugin.logException(e); } }
@Override public boolean isDirty() { if (fBundleModel != null && (fBundleModel instanceof IEditable) && ((IEditable) fBundleModel).isDirty()) return true; if (fExtensionsModel != null && (fExtensionsModel instanceof IEditable) && ((IEditable) fExtensionsModel).isDirty()) return true; return false; }
protected void flushModel(IDocument doc) { boolean flushed = true; if (!fEditOperations.isEmpty()) { try { MultiTextEdit edit = new MultiTextEdit(); if (isNewlineNeeded(doc)) insert(edit, new InsertEdit(doc.getLength(), TextUtilities.getDefaultLineDelimiter(doc))); for (int i = 0; i < fEditOperations.size(); i++) { insert(edit, fEditOperations.get(i)); } if (fModel instanceof IEditingModel) ((IEditingModel) fModel).setStale(true); edit.apply(doc); fEditOperations.clear(); } catch (MalformedTreeException e) { PDEPlugin.logException(e); flushed = false; } catch (BadLocationException e) { PDEPlugin.logException(e); flushed = false; } } // If no errors were encountered flushing the model, then undirty the // model. This needs to be done regardless of whether there are any // edit operations or not; since, the contributed actions need to be // updated and the editor needs to be undirtied if (flushed && (fModel instanceof IEditable)) { ((IEditable) fModel).setDirty(false); } }
public boolean isEditable() { if (fEditor == null) return false; IBaseModel model = fEditor.getAggregateModel(); return model instanceof IEditable ? ((IEditable) model).isEditable() : false; } }
public boolean mustSave() { if (!fIsSourceMode) { if (fModel instanceof IEditable) { if (((IEditable) fModel).isDirty()) { return true; } } } return !fEditOperations.isEmpty() || fDocumentProvider.canSaveDocument(fEditorInput); }