blob: dc5d716a6aac32a40647b2857d5201f778ea776d [file] [log] [blame]
/*
* Copyright 2000-2012 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.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.apache.org/licenses/LICENSE-2.0
*
* 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 org.jetbrains.jps.model.java.impl;
import com.intellij.openapi.util.Comparing;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jps.model.JpsUrlList;
import org.jetbrains.jps.model.ex.JpsCompositeElementBase;
import org.jetbrains.jps.model.impl.JpsUrlListRole;
import org.jetbrains.jps.model.java.JpsJavaModuleExtension;
import org.jetbrains.jps.model.java.LanguageLevel;
/**
* @author nik
*/
public class JpsJavaModuleExtensionImpl extends JpsCompositeElementBase<JpsJavaModuleExtensionImpl> implements JpsJavaModuleExtension {
private static final JpsUrlListRole JAVADOC_ROOTS_ROLE = new JpsUrlListRole("javadoc roots");
private static final JpsUrlListRole ANNOTATIONS_ROOTS_ROLE = new JpsUrlListRole("annotation roots");
private String myOutputUrl;
private String myTestOutputUrl;
private boolean myInheritOutput;
private boolean myExcludeOutput;
private LanguageLevel myLanguageLevel;
public JpsJavaModuleExtensionImpl() {
myContainer.setChild(JAVADOC_ROOTS_ROLE);
myContainer.setChild(ANNOTATIONS_ROOTS_ROLE);
}
private JpsJavaModuleExtensionImpl(JpsJavaModuleExtensionImpl original) {
super(original);
myOutputUrl = original.myOutputUrl;
myTestOutputUrl = original.myTestOutputUrl;
myLanguageLevel = original.myLanguageLevel;
}
@NotNull
@Override
public JpsJavaModuleExtensionImpl createCopy() {
return new JpsJavaModuleExtensionImpl(this);
}
@NotNull
@Override
public JpsUrlList getAnnotationRoots() {
return myContainer.getChild(ANNOTATIONS_ROOTS_ROLE);
}
@NotNull
@Override
public JpsUrlList getJavadocRoots() {
return myContainer.getChild(JAVADOC_ROOTS_ROLE);
}
@Override
public String getOutputUrl() {
return myOutputUrl;
}
@Override
public void setOutputUrl(String outputUrl) {
if (!Comparing.equal(myOutputUrl, outputUrl)) {
myOutputUrl = outputUrl;
fireElementChanged();
}
}
@Override
public String getTestOutputUrl() {
return myTestOutputUrl;
}
@Override
public void setTestOutputUrl(String testOutputUrl) {
if (!Comparing.equal(myTestOutputUrl, testOutputUrl)) {
myTestOutputUrl = testOutputUrl;
fireElementChanged();
}
}
@Override
public LanguageLevel getLanguageLevel() {
return myLanguageLevel;
}
@Override
public void setLanguageLevel(LanguageLevel languageLevel) {
if (!Comparing.equal(myLanguageLevel, languageLevel)) {
myLanguageLevel = languageLevel;
fireElementChanged();
}
}
public void applyChanges(@NotNull JpsJavaModuleExtensionImpl modified) {
setLanguageLevel(modified.myLanguageLevel);
setInheritOutput(modified.myInheritOutput);
setExcludeOutput(modified.myExcludeOutput);
setOutputUrl(modified.myOutputUrl);
setTestOutputUrl(modified.myTestOutputUrl);
}
@Override
public boolean isInheritOutput() {
return myInheritOutput;
}
@Override
public void setInheritOutput(boolean inheritOutput) {
if (myInheritOutput != inheritOutput) {
myInheritOutput = inheritOutput;
fireElementChanged();
}
}
@Override
public boolean isExcludeOutput() {
return myExcludeOutput;
}
@Override
public void setExcludeOutput(boolean excludeOutput) {
if (myExcludeOutput != excludeOutput) {
myExcludeOutput = excludeOutput;
fireElementChanged();
}
}
}