/*
* Copyright (c) 2012, the Dart project authors.
*
* Licensed under the Eclipse Public License v1.0 (the "License"); you may not use this file except
* in compliance with the License. You may obtain a copy of the License at
*
* http://www.eclipse.org/legal/epl-v10.html
*
* Unless required by applicable law or agreed to in writing, software distributed under the License
* is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
* or implied. See the License for the specific language governing permissions and limitations under
* the License.
*/
package com.google.dart.tools.ui.web.yaml;
import com.google.dart.tools.ui.web.utils.WebEditor;
import com.google.dart.tools.ui.web.yaml.model.YamlDocument;
import com.google.dart.tools.ui.web.yaml.model.YamlParser;
import org.eclipse.jface.text.IDocumentExtension3;
import org.eclipse.jface.text.IRegion;
import org.eclipse.jface.text.source.DefaultCharacterPairMatcher;
import org.eclipse.jface.text.source.ICharacterPairMatcher;
import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.texteditor.SourceViewerDecorationSupport;
/**
* An editor for yaml files.
*/
public class YamlEditor extends WebEditor {
private YamlDocument model;
/**
* Create a new YamlEditor.
*/
public YamlEditor() {
setRulerContextMenuId("#DartYamlEditorRulerContext");
setSourceViewerConfiguration(new YamlSourceViewerConfiguration(this));
setDocumentProvider(new YamlDocumentProvider());
}
public YamlDocument getModel() {
if (model == null) {
model = YamlParser.createEmpty();
}
return model;
}
@Override
protected void configureSourceViewerDecorationSupport(SourceViewerDecorationSupport support) {
ICharacterPairMatcher matcher = new DefaultCharacterPairMatcher(
new char[] {'{', '}'},
IDocumentExtension3.DEFAULT_PARTITIONING);
support.setCharacterPairMatcher(matcher);
support.setMatchingCharacterPainterPreferenceKeys(MATCHING_BRACKETS, MATCHING_BRACKETS_COLOR);
super.configureSourceViewerDecorationSupport(support);
}
@Override
protected void handleDocumentModified() {
model = null;
}
@Override
protected void handleReconcilation(IRegion partition) {
}
protected boolean isPubspecEditor() {
IEditorInput input = getEditorInput();
if (input != null) {
return "pubspec.yaml".equals(input.getName());
} else {
return false;
}
}
@Override
protected boolean isTabsToSpacesConversionEnabled() {
return true;
}
}