+ /**
+ * @return the default alignFrame acted on by the public applet methods.
+ * May return null with an error message on System.err indicating the fact.
+ */
+ protected AlignFrame getDefaultTargetFrame()
+ {
+ if (currentAlignFrame!=null)
+ {
+ return currentAlignFrame;
+ }
+ if (initialAlignFrame!=null)
+ {
+ return initialAlignFrame;
+ }
+ System.err.println("Implementation error: Jalview Applet API cannot work out which AlignFrame to use.");
+ return null;
+ }
+ /**
+ * separator used for separatorList
+ */
+ protected String separator = "|"; // this is a safe(ish) separator - tabs don't work for firefox
+ /**
+ * parse the string into a list
+ * @param list
+ * @return elements separated by separator
+ */
+ public String[] separatorListToArray(String list)
+ {
+ int seplen = separator.length();
+ if (list==null || list.equals(""))
+ return null;
+ java.util.Vector jv = new Vector();
+ int cp=0,pos;
+ while ((pos=list.indexOf(separator,cp))>cp)
+ {
+ jv.addElement(list.substring(cp,pos));
+ cp = pos+seplen;
+ }
+ if (cp<list.length())
+ {
+ jv.addElement(list.substring(cp));
+ }
+ if (jv.size()>0)
+ { String[] v = new String[jv.size()];
+ for (int i=0; i<v.length; i++)
+ {
+ v[i] = (String) jv.elementAt(i);
+ }
+ jv.removeAllElements();
+ if (debug)
+ {
+ System.err.println("Array from '"+separator+"' separated List:\n"+v.length);
+ for (int i=0; i<v.length;i++)
+ {
+ System.err.println("item "+i+" '"+v[i]+"'");
+ }
+ }
+ return v;
+ }
+ if (debug)
+ {
+ System.err.println("Empty Array from '"+separator+"' separated List");
+ }
+ return null;
+ }
+ /**
+ * concatenate the list with separator
+ * @param list
+ * @return concatenated string
+ */
+ public String arrayToSeparatorList(String[] list)
+ {
+ StringBuffer v = new StringBuffer();
+ if (list!=null)
+ {
+ for (int i=0,iSize=list.length-1;i<iSize;i++)
+ {
+ if (list[i]!=null)
+ {
+ v.append(list[i]);
+ }
+ v.append(separator);
+ }
+ if (list[list.length-1]!=null)
+ { v.append(list[list.length-1]);
+ }
+ if (debug)
+ {
+ System.err.println("Returning '"+separator+"' separated List:\n");
+ System.err.println(v);
+ }
+ return v.toString();
+ }
+ if (debug)
+ {
+ System.err.println("Returning empty '"+separator+"' separated List\n");
+ }
+ return "";
+ }
+ /**
+ * @return
+ * @see jalview.appletgui.AlignFrame#getFeatureGroups()
+ */
+ public String getFeatureGroups()
+ {
+ String lst = arrayToSeparatorList(getDefaultTargetFrame().getFeatureGroups());
+ return lst;
+ }
+ /**
+ * @param alf alignframe to get feature groups on
+ * @return
+ * @see jalview.appletgui.AlignFrame#getFeatureGroups()
+ */
+ public String getFeatureGroupsOn(AlignFrame alf)
+ {
+ String lst = arrayToSeparatorList(alf.getFeatureGroups());
+ return lst;
+ }
+ /**
+ * @param visible
+ * @return
+ * @see jalview.appletgui.AlignFrame#getFeatureGroupsOfState(boolean)
+ */
+ public String getFeatureGroupsOfState(boolean visible)
+ {
+ return arrayToSeparatorList(getDefaultTargetFrame().getFeatureGroupsOfState(visible));
+ }
+ /**
+ * @param alf align frame to get groups of state visible
+ * @param visible
+ * @return
+ * @see jalview.appletgui.AlignFrame#getFeatureGroupsOfState(boolean)
+ */
+ public String getFeatureGroupsOfStateOn(AlignFrame alf, boolean visible)
+ {
+ return arrayToSeparatorList(alf.getFeatureGroupsOfState(visible));
+ } /**
+ * @param groups tab separated list of group names
+ * @param state true or false
+ * @see jalview.appletgui.AlignFrame#setFeatureGroupState(java.lang.String[], boolean)
+ */
+ public void setFeatureGroupStateOn(AlignFrame alf, String groups, boolean state)
+ {
+ boolean st = state;//!(state==null || state.equals("") || state.toLowerCase().equals("false"));
+ alf.setFeatureGroupState(separatorListToArray(groups), st);
+ }
+ public void setFeatureGroupState(String groups, boolean state)
+ {
+ setFeatureGroupStateOn(getDefaultTargetFrame(), groups, state);
+ }
+ /**
+ * List separator string
+ * @return the separator
+ */
+ public String getSeparator()
+ {
+ return separator;
+ }
+ /**
+ * List separator string
+ * @param separator the separator to set
+ */
+ public void setSeparator(String separator)
+ {
+ this.separator = separator;
+ }