X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.modeling.ui%2Fsrc%2Forg%2Fsimantics%2Fmodeling%2Fui%2FcomponentTypeEditor%2FSCLModuleEditor.java;h=ad36bb34c665a0705fd8d6aae98f9529e53dccdb;hb=fd2a6ff5d708baed2bdbaf94e6cd7bcc7b288069;hp=9fc4c16a34c0be151251b262daeb77e9ae8abb7d;hpb=969bd23cab98a79ca9101af33334000879fb60c5;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/componentTypeEditor/SCLModuleEditor.java b/bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/componentTypeEditor/SCLModuleEditor.java index 9fc4c16a3..ad36bb34c 100644 --- a/bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/componentTypeEditor/SCLModuleEditor.java +++ b/bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/componentTypeEditor/SCLModuleEditor.java @@ -1,139 +1,139 @@ -/******************************************************************************* - * Copyright (c) 2012 Association for Decentralized Information Management in - * Industry THTH ry. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * VTT Technical Research Centre of Finland - initial API and implementation - *******************************************************************************/ -package org.simantics.modeling.ui.componentTypeEditor; - -import java.util.function.Supplier; - -import org.eclipse.jface.resource.JFaceResources; -import org.eclipse.jface.resource.LocalResourceManager; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.ui.IEditorInput; -import org.eclipse.ui.IEditorSite; -import org.eclipse.ui.PartInitException; -import org.eclipse.ui.editors.text.TextEditor; -import org.eclipse.ui.texteditor.ITextEditorActionConstants; -import org.eclipse.ui.texteditor.StatusLineContributionItem; -import org.simantics.Simantics; -import org.simantics.db.Session; -import org.simantics.db.common.request.ParametrizedRead; -import org.simantics.db.exception.DatabaseException; -import org.simantics.db.layer0.request.combinations.Combinators; -import org.simantics.scl.ui.editor.SCLSourceViewerConfigurationNew; -import org.simantics.ui.workbench.IResourceEditorInput; -import org.simantics.ui.workbench.ResourceEditorSupport; -import org.simantics.ui.workbench.TitleUpdater; -import org.simantics.ui.workbench.TitleWithParentNameRequest; -import org.simantics.ui.workbench.ToolTipRequest; -import org.simantics.ui.workbench.editor.input.InputValidationCombinators; - - -/** - * @author Antti Villberg; - * @author Hannu Niemistö - */ -public class SCLModuleEditor extends TextEditor { - - private boolean disposed = false; - - private ParametrizedRead INPUT_VALIDATOR = - Combinators.compose( - InputValidationCombinators.hasURI(), - InputValidationCombinators.extractInputResource() - ); - - private ResourceEditorSupport support; - protected LocalResourceManager resourceManager; - - public SCLModuleEditor() { - super(); - resourceManager = new LocalResourceManager(JFaceResources.getResources()); - preInitialize(); - } - - @Override - public boolean isTabsToSpacesConversionEnabled() { - return true; - } - - protected void preInitialize() { - //showOverviewRuler(); - SCLSourceViewerConfigurationNew sourceViewerConfiguration = new SCLSourceViewerConfigurationNew(resourceManager); - setDocumentProvider(new SCLModuleEditorDocumentProvider(sourceViewerConfiguration)); - setSourceViewerConfiguration(sourceViewerConfiguration); - } - - protected ParametrizedRead getInputValidator() { - return INPUT_VALIDATOR; - } - - @Override - public void init(IEditorSite site, IEditorInput input) - throws PartInitException { - super.init(site, input); - - support = new ResourceEditorSupport(this, getInputValidator()); - support.activateValidation(); - try { - getResourceInput().init(null); - } catch (DatabaseException e) { - throw new PartInitException("Failed to initialize " + input, e); - } - } - - protected IResourceEditorInput getResourceInput() { - return (IResourceEditorInput) getEditorInput(); - } - - @Override - public void createPartControl(Composite parent) { - super.createPartControl(parent); - StatusLineContributionItem statusLineContribution = new StatusLineContributionItem( - ITextEditorActionConstants.STATUS_CATEGORY_INPUT_POSITION, - true, 14); - setStatusField(statusLineContribution, - ITextEditorActionConstants.STATUS_CATEGORY_INPUT_POSITION); - getEditorSite().getActionBars().getStatusLineManager().add(statusLineContribution); - getEditorSite().getActionBars().updateActionBars(); - updatePartName(); - } - - protected void updatePartName() { - setPartName(getEditorInput().getName()); - - Session session = Simantics.peekSession(); - if (session != null) { - Supplier disposedCallback = this::isDisposed; - session.asyncRequest( - new TitleWithParentNameRequest(getResourceInput()), - new TitleUpdater(getSite().getShell().getDisplay(), this::setPartName, disposedCallback)); - session.asyncRequest( - new ToolTipRequest(getSite().getId(), getResourceInput()), - new TitleUpdater(getSite().getShell().getDisplay(), this::setTitleToolTip, disposedCallback)); - } - } - - @Override - public void dispose() { - disposed = true; - if (support != null) { - support.dispose(); - support = null; - } - super.dispose(); - resourceManager.dispose(); - } - - public boolean isDisposed() { - return disposed; - } - +/******************************************************************************* + * Copyright (c) 2012 Association for Decentralized Information Management in + * Industry THTH ry. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * VTT Technical Research Centre of Finland - initial API and implementation + *******************************************************************************/ +package org.simantics.modeling.ui.componentTypeEditor; + +import java.util.function.Supplier; + +import org.eclipse.jface.resource.JFaceResources; +import org.eclipse.jface.resource.LocalResourceManager; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.ui.IEditorInput; +import org.eclipse.ui.IEditorSite; +import org.eclipse.ui.PartInitException; +import org.eclipse.ui.editors.text.TextEditor; +import org.eclipse.ui.texteditor.ITextEditorActionConstants; +import org.eclipse.ui.texteditor.StatusLineContributionItem; +import org.simantics.Simantics; +import org.simantics.db.Session; +import org.simantics.db.common.request.ParametrizedRead; +import org.simantics.db.exception.DatabaseException; +import org.simantics.db.layer0.request.combinations.Combinators; +import org.simantics.scl.ui.editor.SCLSourceViewerConfigurationNew; +import org.simantics.ui.workbench.IResourceEditorInput; +import org.simantics.ui.workbench.ResourceEditorSupport; +import org.simantics.ui.workbench.TitleUpdater; +import org.simantics.ui.workbench.TitleWithParentNameRequest; +import org.simantics.ui.workbench.ToolTipRequest; +import org.simantics.ui.workbench.editor.input.InputValidationCombinators; + + +/** + * @author Antti Villberg; + * @author Hannu Niemistö + */ +public class SCLModuleEditor extends TextEditor { + + private boolean disposed = false; + + private ParametrizedRead INPUT_VALIDATOR = + Combinators.compose( + InputValidationCombinators.hasURI(), + InputValidationCombinators.extractInputResource() + ); + + private ResourceEditorSupport support; + protected LocalResourceManager resourceManager; + + public SCLModuleEditor() { + super(); + resourceManager = new LocalResourceManager(JFaceResources.getResources()); + preInitialize(); + } + + @Override + public boolean isTabsToSpacesConversionEnabled() { + return true; + } + + protected void preInitialize() { + //showOverviewRuler(); + SCLSourceViewerConfigurationNew sourceViewerConfiguration = new SCLSourceViewerConfigurationNew(resourceManager); + setDocumentProvider(new SCLModuleEditorDocumentProvider(sourceViewerConfiguration)); + setSourceViewerConfiguration(sourceViewerConfiguration); + } + + protected ParametrizedRead getInputValidator() { + return INPUT_VALIDATOR; + } + + @Override + public void init(IEditorSite site, IEditorInput input) + throws PartInitException { + super.init(site, input); + + support = new ResourceEditorSupport(this, getInputValidator()); + support.activateValidation(); + try { + getResourceInput().init(null); + } catch (DatabaseException e) { + throw new PartInitException("Failed to initialize " + input, e); //$NON-NLS-1$ + } + } + + protected IResourceEditorInput getResourceInput() { + return (IResourceEditorInput) getEditorInput(); + } + + @Override + public void createPartControl(Composite parent) { + super.createPartControl(parent); + StatusLineContributionItem statusLineContribution = new StatusLineContributionItem( + ITextEditorActionConstants.STATUS_CATEGORY_INPUT_POSITION, + true, 14); + setStatusField(statusLineContribution, + ITextEditorActionConstants.STATUS_CATEGORY_INPUT_POSITION); + getEditorSite().getActionBars().getStatusLineManager().add(statusLineContribution); + getEditorSite().getActionBars().updateActionBars(); + updatePartName(); + } + + protected void updatePartName() { + setPartName(getEditorInput().getName()); + + Session session = Simantics.peekSession(); + if (session != null) { + Supplier disposedCallback = this::isDisposed; + session.asyncRequest( + new TitleWithParentNameRequest(getResourceInput()), + new TitleUpdater(getSite().getShell().getDisplay(), this::setPartName, disposedCallback)); + session.asyncRequest( + new ToolTipRequest(getSite().getId(), getResourceInput()), + new TitleUpdater(getSite().getShell().getDisplay(), this::setTitleToolTip, disposedCallback)); + } + } + + @Override + public void dispose() { + disposed = true; + if (support != null) { + support.dispose(); + support = null; + } + super.dispose(); + resourceManager.dispose(); + } + + public boolean isDisposed() { + return disposed; + } + } \ No newline at end of file