blob: f3b59fe2738ad7bb0d01f6cc39e3a4ca9cf1e143 [file] [log] [blame]
package com.intellij.tasks.generic;
import com.intellij.util.xmlb.annotations.Attribute;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
/**
* Editable variable which name can be used as placeholder and auto completed in EditorFields of
* {@link GenericRepositoryEditor}. Variables is editable via {@link ManageTemplateVariablesDialog},
* but if {@code shownOnFirstTab} property was set, it will also be shown on "General" tab among
* standard fields like "Server URL", "Username" and "Password".
*
* @see GenericRepositoryEditor
* @see ManageTemplateVariablesDialog
*
* @author evgeny.zakrevsky
* @author Mikhail Golubev
*/
public class TemplateVariable {
private String myName;
private String myValue = "";
private String myDescription = "";
private boolean myReadOnly;
private boolean myHidden;
private boolean myShownOnFirstTab;
public TemplateVariable(@NotNull @NonNls String name, @NotNull @NonNls String value) {
myName = name;
myValue = String.valueOf(value);
myReadOnly = false;
myDescription = "";
}
/**
* Serialization constructor
*/
@SuppressWarnings("unusedDesclaration")
public TemplateVariable() {
// empty
}
/**
* Cloning constructor
*/
private TemplateVariable(TemplateVariable other) {
myName = other.getName();
myValue = other.getValue();
myDescription = other.getDescription();
myHidden = other.isHidden();
myReadOnly = other.isReadOnly();
myShownOnFirstTab = other.isShownOnFirstTab();
}
public void setName(@NotNull @NonNls String name) {
myName = name;
}
public void setValue(@NotNull @NonNls String value) {
myValue = value;
}
@NotNull
public String getName() {
return myName;
}
@NotNull
public String getValue() {
return myValue;
}
// TODO: actually not used in UI
@NotNull
public String getDescription() {
return myDescription;
}
public void setDescription(@NotNull @NonNls String description) {
myDescription = description;
}
@Attribute("readOnly")
public boolean isReadOnly() {
return myReadOnly;
}
public void setReadOnly(boolean readOnly) {
myReadOnly = readOnly;
}
@Attribute("hidden")
public boolean isHidden() {
return myHidden;
}
public void setHidden(boolean hidden) {
myHidden = hidden;
}
@Attribute("shownOnFirstTab")
public boolean isShownOnFirstTab() {
return myShownOnFirstTab;
}
public void setShownOnFirstTab(boolean shownOnFirstTab) {
myShownOnFirstTab = shownOnFirstTab;
}
public TemplateVariable clone() {
return new TemplateVariable(this);
}
@Override
public String toString() {
return String.format("TemplateVariable(name='%s', value='%s')", getName(), getValue());
}
/**
* Represents predefined template variable such as "serverUrl", "login" or "password" which are not
* set explicitly by user but instead taken from repository itself.
*
* @see GenericRepository
*/
public abstract static class FactoryVariable extends TemplateVariable {
protected FactoryVariable(@NotNull @NonNls String name) {
this(name, false);
}
public FactoryVariable(@NotNull @NonNls String name, boolean hidden) {
super(name, "");
setHidden(hidden);
}
@NotNull
@Override
public abstract String getValue();
@Override
public final void setName(@NotNull String name) {
throw new UnsupportedOperationException("Name of predefined variable can't be changed");
}
@Override
public final void setValue(@NotNull String value) {
throw new UnsupportedOperationException("Value of predefined variable can't be changed explicitly");
}
@Override
public final void setShownOnFirstTab(boolean shownOnFirstTab) {
throw new UnsupportedOperationException("This parameter can't be changed for predefined variable");
}
@Override
public void setReadOnly(boolean readOnly) {
throw new UnsupportedOperationException("This parameter can't be changed for predefined variable");
}
@Override
public boolean isReadOnly() {
return true;
}
}
}