blob: 0b0672e24e469e571ec363cd05957dfa95d17863 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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.netbeans.modules.refactoring.java.ui;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Set;
import javax.lang.model.element.Modifier;
import org.netbeans.api.java.source.TreePathHandle;
import org.netbeans.modules.refactoring.api.AbstractRefactoring;
import org.openide.util.lookup.Lookups;
/** Encapsulate fields refactoring. This is a composed refactoring (uses instances of {@link org.netbeans.modules.refactoring.api.EncapsulateFieldRefactoring}
* to encapsulate several fields at once.
*
* @author Pavel Flaska
* @author Jan Becicka
* @author Jan Pokorsky
*/
public final class EncapsulateFieldsRefactoring extends AbstractRefactoring {
private Collection<EncapsulateFieldInfo> refactorFields = Collections.emptyList();
private Set<Modifier> methodModifiers = Collections.emptySet();
private Set<Modifier> fieldModifiers = Collections.emptySet();;
private boolean alwaysUseAccessors;
private boolean isGeneratePropertyChangeSupport;
private boolean isGenerateVetoableSupport;
/** Creates a new instance of EcapsulateFields.
* @param selectedObject field to encapsulate, whatever tree of class
* containing trees to encapsulate
*/
public EncapsulateFieldsRefactoring(TreePathHandle selectedObject) {
super(Lookups.fixed(selectedObject));
}
public EncapsulateFieldsRefactoring(Collection<TreePathHandle> selectedObjects) {
super(Lookups.fixed(selectedObjects.iterator().next(), selectedObjects));
}
/**
* Getter for property refactorFields
* @return Value of refactorFields
*/
public Collection<EncapsulateFieldInfo> getRefactorFields() {
return refactorFields;
}
/**
* Getter for property methodModifier
* @return Value of methodModifier
*/
public Set<Modifier> getMethodModifiers() {
return methodModifiers;
}
/**
* Getter for property fieldModifier
* @return Value of fieldModifier
*/
public Set<Modifier> getFieldModifiers() {
return fieldModifiers;
}
/**
* Getter for property alwaysUseAccessors
* @return Value of alwaysUseAccessors
*/
public boolean isAlwaysUseAccessors() {
return alwaysUseAccessors;
}
/**
* Setter for property refactorFields
* @param refactorFields New value of property refactorFields
*/
public void setRefactorFields(Collection<EncapsulateFieldInfo> refactorFields) {
this.refactorFields = Collections.unmodifiableCollection(
new ArrayList<EncapsulateFieldInfo>(refactorFields));
}
/**
* Setter for property methodModifier
* @param methodModifier New value of property methodModifier
*/
public void setMethodModifiers(Set<Modifier> methodModifier) {
this.methodModifiers = methodModifier;
}
/**
* Setter for property fieldModifier
* @param fieldModifier New value of property fieldModifier
*/
public void setFieldModifiers(Set<Modifier> fieldModifier) {
this.fieldModifiers = fieldModifier;
}
/**
* Setter for property alwaysUseAccessors
* @param alwaysUseAccessors New value of property alwaysUseAccessors
*/
public void setAlwaysUseAccessors(boolean alwaysUseAccessors) {
this.alwaysUseAccessors = alwaysUseAccessors;
}
public TreePathHandle getSelectedObject() {
return getRefactoringSource().lookup(TreePathHandle.class);
}
/**
*
* @return
*/
public boolean isGeneratePropertyChangeSupport() {
return isGeneratePropertyChangeSupport;
}
/**
*
* @param isGeneratePropertyChangeSupport
*/
public void setGeneratePropertyChangeSupport(boolean isGeneratePropertyChangeSupport) {
this.isGeneratePropertyChangeSupport = isGeneratePropertyChangeSupport;
}
/**
*
* @return
*/
public boolean isGenerateVetoableSupport() {
return isGenerateVetoableSupport;
}
/**
*
* @param isGenerateVetoableSupport
*/
public void setGenerateVetoableSupport(boolean isGenerateVetoableSupport) {
this.isGenerateVetoableSupport = isGenerateVetoableSupport;
}
////////////////////////////////////////////////////////////////////////////
// INNER CLASSES
////////////////////////////////////////////////////////////////////////////
/**
* Represents data from the panel.
*/
public static final class EncapsulateFieldInfo {
TreePathHandle field;
String getterName;
String setterName;
/**
* Creates an instance of Encapsulate Field Info
* @param field
* @param getterName
* @param setterName
*/
public EncapsulateFieldInfo(TreePathHandle field, String getterName, String setterName) {
this.field = field;
this.getterName = getterName;
this.setterName = setterName;
}
/**
* Getter for property getterName.
*
* @return Value of property getterName.
*/
public String getGetterName() { return getterName; }
/**
* Getter for property setterName.
*
* @return Value of property setterName.
*/
public String getSetterName() { return setterName; }
/**
* Getter for property field.
*
* @return Value of property field.
*/
public TreePathHandle getField() { return field; }
}
}