package tk.eclipse.plugin.htmleditor.tasktag; import java.util.ArrayList; import java.util.List; import org.eclipse.core.resources.IMarker; import org.eclipse.jface.preference.IPreferenceStore; import tk.eclipse.plugin.htmleditor.HTMLPlugin; /** * * @author Naoki Takezoe */ public class TaskTag implements Cloneable { private String tag; private int priority; /** The display string for IMaker.PRIORITY_HIGH */ public static final String HIGH = "High"; /** The display string for IMaker.PRIORITY_NORMAL */ public static final String NORMAL = "Normal"; /** The display string for IMaker.PRIORITY_LOW */ public static final String LOW = "Low"; /** The display strings for priorities */ public static final String[] PRIORITIES = { HIGH, NORMAL, LOW }; public TaskTag(String tag, int priority){ setTag(tag); setPriority(priority); } public int getPriority() { return priority; } public void setPriority(int priority) { this.priority = priority; } public String getPriorityName(){ switch(this.priority){ case IMarker.PRIORITY_HIGH : return HIGH; case IMarker.PRIORITY_NORMAL : return NORMAL; case IMarker.PRIORITY_LOW : return LOW; default: return ""; } } public String getTag() { return tag; } public void setTag(String tag) { this.tag = tag; } @Override protected TaskTag clone() throws CloneNotSupportedException { return new TaskTag(getTag(), getPriority()); } @Override public boolean equals(Object obj){ if(obj instanceof TaskTag){ TaskTag otherTag = (TaskTag)obj; return getTag().equals(otherTag.getTag()) && getPriority()==otherTag.getPriority(); } return false; } public static boolean hasChange(List tags1, List tags2){ if(tags1.size()!=tags2.size()){ return true; } for(int i=0;i<tags1.size();i++){ TaskTag tag1 = (TaskTag)tags1.get(i); TaskTag tag2 = (TaskTag)tags2.get(i); if(!tag1.equals(tag2)){ return true; } } return false; } public static List<TaskTag> loadFromPreference(boolean defaults){ IPreferenceStore store = HTMLPlugin.getDefault().getPreferenceStore(); String value = null; if(defaults){ value = store.getDefaultString(HTMLPlugin.PREF_TASK_TAGS); } else { value = store.getString(HTMLPlugin.PREF_TASK_TAGS); } List<TaskTag> list = new ArrayList<TaskTag>(); if(value!=null){ String[] values = value.split("\n"); for(int i=0;i<values.length;i++){ String[] split = values[i].split("\t"); if(split.length==2){ list.add(new TaskTag(split[0], Integer.parseInt(split[1]))); } } } return list; } public static void saveToPreference(List<TaskTag> list){ IPreferenceStore store = HTMLPlugin.getDefault().getPreferenceStore(); StringBuffer sb = new StringBuffer(); for(int i=0;i<list.size();i++){ TaskTag tag = list.get(i); sb.append(tag.getTag()); sb.append("\t"); sb.append(tag.getPriority()); sb.append("\n"); } store.setValue(HTMLPlugin.PREF_TASK_TAGS, sb.toString()); } /** * Converts the display string to the priority * which is defined in {@link IMarker}. * * @param name the display string of the priority * @return the priority value */ public static int convertPriority(String name){ int priority = IMarker.PRIORITY_NORMAL; if(name.equals("High")){ priority = IMarker.PRIORITY_HIGH; } else if(name.equals("Normal")){ priority = IMarker.PRIORITY_NORMAL; } else if(name.equals("Low")){ priority = IMarker.PRIORITY_LOW; } return priority; } }