1765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye/******************************************************************************* 2765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * Copyright (c) 2011 Google, Inc. 3765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * All rights reserved. This program and the accompanying materials 4765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * are made available under the terms of the Eclipse Public License v1.0 5765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * which accompanies this distribution, and is available at 6765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * http://www.eclipse.org/legal/epl-v10.html 7765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * 8765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * Contributors: 9765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * Google, Inc. - initial API and implementation 10765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye *******************************************************************************/ 11765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbyepackage org.eclipse.wb.internal.core.model.property.category; 12765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye 13765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbyeimport org.eclipse.wb.internal.core.model.property.Property; 14765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbyeimport org.eclipse.wb.internal.core.utils.check.Assert; 15765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye 16765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye/** 17765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * Describes category of {@link Property}. 18765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * 19765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * @author scheglov_ke 20765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * @coverage core.model.property 21765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye */ 22765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbyepublic final class PropertyCategory { 23765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye /** 24765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * "Normal" category, used for properties that should be displayed without any effect. 25765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye */ 26765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye public static final PropertyCategory NORMAL = new PropertyCategory(0, "NORMAL"); 27765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye /** 28765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * "Preferred" category, for properties that are most useful for component. 29765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye */ 30765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye public static final PropertyCategory PREFERRED = new PropertyCategory(-1, "PREFERRED"); 31765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye /** 32765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * "Advanced" category, for properties that are rarely used, visible if modified, even if not 33765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * enabled. 34765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye */ 35765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye public static final PropertyCategory ADVANCED = new PropertyCategory(1, "ADVANCED"); 36765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye /** 37765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * "Advanced" category, for properties that are rarely used, visible only if enabled. 38765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye */ 39765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye public static final PropertyCategory ADVANCED_REALLY = new PropertyCategory(2, "ADVANCED_REALLY"); 40765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye /** 41765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * "Hidden" category, for properties that should not be displayed. 42765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye */ 43765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye public static final PropertyCategory HIDDEN = new PropertyCategory(3, "HIDDEN"); 44765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye 45765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye //////////////////////////////////////////////////////////////////////////// 46765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye // 47765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye // System 48765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye // 49765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye //////////////////////////////////////////////////////////////////////////// 50765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye /** 51765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * @return the system {@link PropertyCategory} with given priority. 52765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye */ 53765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye public static final PropertyCategory system(int priority) { 54765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye return new PropertyCategory(SYSTEM_BASE + priority, "SYSTEM:" + priority); 55765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye } 56765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye 57765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye /** 58765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * @return the system {@link PropertyCategory} with priority 59765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * <code>system.getPriority() + additional</code>. 60765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye */ 61765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye public static final PropertyCategory system(PropertyCategory system, int additional) { 62765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye Assert.isTrue(system.isSystem()); 63765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye return system(system.getPriority() - SYSTEM_BASE + additional); 64765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye } 65765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye 66765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye //////////////////////////////////////////////////////////////////////////// 67765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye // 68765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye // Instance fields 69765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye // 70765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye //////////////////////////////////////////////////////////////////////////// 71765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye private static final int SYSTEM_BASE = 1000; 72765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye private final int m_priority; 73765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye private final String m_string; 74765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye 75765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye //////////////////////////////////////////////////////////////////////////// 76765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye // 77765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye // Constructor 78765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye // 79765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye //////////////////////////////////////////////////////////////////////////// 80765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye private PropertyCategory(int priority, String string) { 81765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye m_priority = priority; 82765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye m_string = string; 83765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye } 84765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye 85765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye //////////////////////////////////////////////////////////////////////////// 86765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye // 87765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye // Object 88765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye // 89765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye //////////////////////////////////////////////////////////////////////////// 90765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye @Override 91765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye public String toString() { 92765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye return m_string; 93765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye } 94765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye 95765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye @Override 96765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye public boolean equals(Object obj) { 97765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye if (obj == this) { 98765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye return true; 99765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye } 100765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye if (obj instanceof PropertyCategory) { 101765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye PropertyCategory category = (PropertyCategory) obj; 102765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye return m_priority == category.m_priority; 103765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye } 104765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye // unknown class 105765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye return false; 106765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye } 107765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye 108765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye @Override 109765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye public int hashCode() { 110765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye return m_priority; 111765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye } 112765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye 113765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye //////////////////////////////////////////////////////////////////////////// 114765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye // 115765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye // Access 116765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye // 117765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye //////////////////////////////////////////////////////////////////////////// 118765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye /** 119765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * @return <code>true</code> if this property is preferred. 120765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye */ 121765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye public boolean isPreferred() { 122765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye return this == PREFERRED; 123765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye } 124765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye 125765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye /** 126765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * @return <code>true</code> if this property is advanced. 127765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye */ 128765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye public boolean isAdvanced() { 129765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye return this == ADVANCED; 130765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye } 131765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye 132765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye /** 133765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * @return <code>true</code> if this property is really advanced. 134765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye */ 135765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye public boolean isAdvancedReally() { 136765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye return this == ADVANCED_REALLY; 137765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye } 138765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye 139765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye /** 140765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * @return <code>true</code> if this property is hidden. 141765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye */ 142765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye public boolean isHidden() { 143765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye return this == HIDDEN; 144765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye } 145765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye 146765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye /** 147765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * @return <code>true</code> if this property is system. 148765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye */ 149765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye public boolean isSystem() { 150765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye return m_priority >= 900; 151765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye } 152765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye 153765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye /** 154765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * @return the priority of this category. 155765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye */ 156765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye public int getPriority() { 157765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye return m_priority; 158765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye } 159765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye} 160