001 /** 002 * Copyright 2003-2004 The Apache Software Foundation 003 * Copyright 2005 Stephen McConnell 004 * 005 * Licensed under the Apache License, Version 2.0 (the "License"); 006 * you may not use this file except in compliance with the License. 007 * You may obtain a copy of the License at 008 * 009 * http://www.apache.org/licenses/LICENSE-2.0 010 * 011 * Unless required by applicable law or agreed to in writing, software 012 * distributed under the License is distributed on an "AS IS" BASIS, 013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 014 * See the License for the specific language governing permissions and 015 * limitations under the License. 016 */ 017 package net.dpml.cli; 018 019 import java.util.Collections; 020 import java.util.HashSet; 021 import java.util.Set; 022 023 /** 024 * An enum of possible display settings. These settings are used to control the 025 * presence of various features in the String representations of options, 026 * CommandLines and usage strings. Usually a Set of DisplaySetting instances 027 * will be passed to a method that will lookup the presence of the values. 028 * 029 * @author <a href="http://www.dpml.net">Digital Product Meta Library</a> 030 * @version 1.0.0 031 */ 032 public final class DisplaySetting 033 { 034 private static final Set ALL_SETTINGS = new HashSet(); 035 036 /** 037 * A Set guarenteed to contain all possible DisplaySetting values 038 */ 039 public static final Set ALL = Collections.unmodifiableSet( ALL_SETTINGS ); 040 041 /** 042 * A Set guarenteed to contain no DisplaySetting values 043 */ 044 public static final Set NONE = Collections.EMPTY_SET; 045 046 /** 047 * Indicates that aliases should be included 048 */ 049 public static final DisplaySetting DISPLAY_ALIASES = 050 new DisplaySetting( "DISPLAY_ALIASES" ); 051 052 /** 053 * Indicates that optionality should be included 054 */ 055 public static final DisplaySetting DISPLAY_OPTIONAL = 056 new DisplaySetting( "DISPLAY_OPTIONAL" ); 057 058 /** 059 * Indicates that property options should be included 060 */ 061 public static final DisplaySetting DISPLAY_PROPERTY_OPTION = 062 new DisplaySetting( "DISPLAY_PROPERTY_OPTION" ); 063 064 /** 065 * Indicates that switches should be included enabled 066 */ 067 public static final DisplaySetting DISPLAY_SWITCH_ENABLED = 068 new DisplaySetting( "DISPLAY_SWITCH_ENABLED" ); 069 070 /** 071 * Indicates that switches should be included disabled 072 */ 073 public static final DisplaySetting DISPLAY_SWITCH_DISABLED = 074 new DisplaySetting( "DISPLAY_SWITCH_DISABLED" ); 075 076 /** 077 * Indicates that group names should be included 078 */ 079 public static final DisplaySetting DISPLAY_GROUP_NAME = 080 new DisplaySetting( "DISPLAY_GROUP_NAME" ); 081 082 /** 083 * Indicates that groups should be included expanded 084 */ 085 public static final DisplaySetting DISPLAY_GROUP_EXPANDED = 086 new DisplaySetting( "DISPLAY_GROUP_EXPANDED" ); 087 088 /** 089 * Indicates that group arguments should be included 090 */ 091 public static final DisplaySetting DISPLAY_GROUP_ARGUMENT = 092 new DisplaySetting( "DISPLAY_GROUP_ARGUMENT" ); 093 094 /** 095 * Indicates that group outer brackets should be included 096 */ 097 public static final DisplaySetting DISPLAY_GROUP_OUTER = 098 new DisplaySetting( "DISPLAY_GROUP_OUTER" ); 099 100 /** 101 * Indicates that arguments should be included numbered 102 */ 103 public static final DisplaySetting DISPLAY_ARGUMENT_NUMBERED = 104 new DisplaySetting( "DISPLAY_ARGUMENT_NUMBERED" ); 105 106 /** 107 * Indicates that arguments should be included bracketed 108 */ 109 public static final DisplaySetting DISPLAY_ARGUMENT_BRACKETED = 110 new DisplaySetting( "DISPLAY_ARGUMENT_BRACKETED" ); 111 112 /** 113 * Indicates that arguments of Parents should be included 114 */ 115 public static final DisplaySetting DISPLAY_PARENT_ARGUMENT = 116 new DisplaySetting( "DISPLAY_PARENT_ARGUMENT" ); 117 118 /** 119 * Indicates that children of Parents should be included 120 */ 121 public static final DisplaySetting DISPLAY_PARENT_CHILDREN = 122 new DisplaySetting( "DISPLAY_PARENT_CHILDREN" ); 123 124 /** 125 * The name of the setting 126 */ 127 private final String m_name; 128 129 /** 130 * The hashCode of the setting 131 */ 132 private final int m_hashCode; 133 134 /** 135 * Creates a new DisplaySetting with the specified name 136 * @param name the name of the setting 137 */ 138 private DisplaySetting( final String name ) 139 { 140 m_name = name; 141 m_hashCode = name.hashCode(); 142 ALL_SETTINGS.add( this ); 143 } 144 145 /** 146 * Return the instance hashcode value. 147 * @return the hash value 148 */ 149 public int hashCode() 150 { 151 return m_hashCode; 152 } 153 154 /** 155 * Test this object for equality with the supplied object. 156 * @param that the other object 157 * @return true if the objects are equal 158 */ 159 public boolean equals( final Object that ) 160 { 161 if( that instanceof DisplaySetting ) 162 { 163 return m_name.compareTo( that.toString() ) == 0; 164 } 165 return false; 166 } 167 168 /** 169 * Return a string representation of the instance. 170 * @return the string 171 */ 172 public String toString() 173 { 174 return m_name; 175 } 176 }