package org.openflexo.view.controller.model;
import org.openflexo.foundation.FlexoEditor;
import org.openflexo.foundation.FlexoModelObject;
public class Location extends ControllerModelObject {
private final FlexoModelObject object;
private final FlexoPerspective perspective;
private final FlexoEditor editor;
public Location(FlexoEditor context, FlexoModelObject object, FlexoPerspective perspective) {
super();
this.editor = context;
this.object = object;
this.perspective = perspective;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + (editor == null ? 0 : editor.hashCode());
result = prime * result + (object == null ? 0 : object.hashCode());
result = prime * result + (perspective == null ? 0 : perspective.hashCode());
return result;
}
@Override
public String toString() {
return (object != null ? object : "No object")
+ " - "
+ (perspective != null ? perspective.getName() : " No perspective" + " - "
+ (editor != null ? editor.getProject() : "No project"));
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
Location other = (Location) obj;
if (editor == null) {
if (other.editor != null) {
return false;
}
} else if (!editor.equals(other.editor)) {
return false;
}
if (object == null) {
if (other.object != null) {
return false;
}
} else if (!object.equals(other.object)) {
return false;
}
if (perspective == null) {
if (other.perspective != null) {
return false;
}
} else if (!perspective.equals(other.perspective)) {
return false;
}
return true;
}
public FlexoModelObject getObject() {
return object;
}
public FlexoPerspective getPerspective() {
return perspective;
}
public FlexoEditor getEditor() {
return editor;
}
public boolean isEditable() {
return getObject().getProject() == null || getObject().getProject() == getEditor().getProject();
}
}