Merge branch 'features/r2_11_2/JAL-3829_3dbeacons' into develop
[jalview.git] / src / jalview / jbgui / FilterOption.java
diff --git a/src/jalview/jbgui/FilterOption.java b/src/jalview/jbgui/FilterOption.java
new file mode 100644 (file)
index 0000000..57a1a42
--- /dev/null
@@ -0,0 +1,119 @@
+package jalview.jbgui;
+
+import jalview.gui.structurechooser.StructureChooserQuerySource;
+import jalview.gui.structurechooser.ThreeDBStructureChooserQuerySource;
+
+/**
+ * This inner class provides the data model for the structure filter combo-box
+ * 
+ * @author tcnofoegbu
+ *
+ */
+public class FilterOption
+{
+  private String name;
+
+  private String value;
+
+  private String view;
+
+  private boolean addSeparatorAfter;
+
+  private StructureChooserQuerySource querySource;
+
+  /**
+   * Model for structure filter option
+   * 
+   * @param name
+   *          - the name of the Option
+   * @param value
+   *          - the value of the option
+   * @param view
+   *          - the category of the filter option
+   * @param addSeparatorAfter
+   *          - if true, a horizontal separator is rendered immediately after
+   *          this filter option, otherwise
+   * @param structureChooserQuerySource
+   *          - the query source that actions this filter
+   */
+  public FilterOption(String name, String value, String view,
+          boolean addSeparatorAfter,
+          StructureChooserQuerySource structureChooserQuerySource)
+  {
+    this.name = name;
+    this.value = value;
+    this.view = view;
+    this.querySource = structureChooserQuerySource;
+    this.addSeparatorAfter = addSeparatorAfter;
+  }
+
+  public String getName()
+  {
+    return name;
+  }
+
+  public void setName(String name)
+  {
+    this.name = name;
+  }
+
+  public String getValue()
+  {
+    return value;
+  }
+
+  public void setValue(String value)
+  {
+    this.value = value;
+  }
+
+  public String getView()
+  {
+    return view;
+  }
+
+  public void setView(String view)
+  {
+    this.view = view;
+  }
+
+  @Override
+  public String toString()
+  {
+    return this.name;
+  }
+
+  public boolean isAddSeparatorAfter()
+  {
+    return addSeparatorAfter;
+  }
+
+  public void setAddSeparatorAfter(boolean addSeparatorAfter)
+  {
+    this.addSeparatorAfter = addSeparatorAfter;
+  }
+
+  public StructureChooserQuerySource getQuerySource()
+  {
+    return querySource;
+  }
+
+  @Override
+  public boolean equals(Object obj)
+  {
+    if (obj instanceof FilterOption) {
+      FilterOption o=(FilterOption) obj;
+      return o.name.equals(name) && o.querySource==querySource && o.value.equals(value) && o.view==view;
+    } else {
+      return super.equals(obj);
+    }
+  }
+
+  @Override
+  public int hashCode()
+  {
+    return ("" + name + ":" + value).hashCode()
+            + (view != null ? view.hashCode() : 0)
+            + (querySource != null ? querySource.hashCode() : 0);
+  }
+}
\ No newline at end of file