| /* |
| * Copyright 2008 Google Inc. |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); you may not |
| * use this file except in compliance with the License. You may obtain a copy of |
| * the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT |
| * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the |
| * License for the specific language governing permissions and limitations under |
| * the License. |
| */ |
| package com.google.gwt.i18n.tools; |
| |
| import com.google.gwt.i18n.client.Constants; |
| import com.google.gwt.i18n.client.ConstantsWithLookup; |
| import com.google.gwt.i18n.client.Localizable; |
| import com.google.gwt.i18n.client.Messages; |
| import com.google.gwt.util.tools.ArgHandler; |
| import com.google.gwt.util.tools.ArgHandlerFlag; |
| |
| /** |
| * This class holds the '-createConstantsWithLookup' and '-createMessages' |
| * ArgHandler classes. It is shared by both I18NSync and I18NCreator classes. |
| * |
| * To use this class, call the getConstantsWithLookupArgHandler() |
| * and getMessagesArgHandler() methods and add the returned ArgHandler |
| * instances to a ToolBase registerHandler() method. When parsing the arguments |
| * is complete, you can retrieve the selected type by calling getArgValue(). |
| */ |
| class ArgHandlerValueChooser { |
| |
| private Class<? extends Localizable> argValue = Constants.class; |
| private ArgHandler cwlArgHandler; |
| private ArgHandler messagesArgHandler; |
| |
| /** |
| * Returns one on "Messages.class", "ConstantsWithLookup.class", or |
| * "Constants.class" depending on which argument handlers fired. |
| * |
| * @return A class literal, returns "Constants.class" by default. |
| */ |
| Class<? extends Localizable> getArgValue() { |
| return argValue; |
| } |
| |
| /** |
| * Creates scripts for a ConstantsWithLookup interface rather than a Constants one. |
| * |
| * @return a flag argument handler |
| */ |
| ArgHandler getConstantsWithLookupArgHandler() { |
| if (cwlArgHandler == null) { |
| cwlArgHandler = new ArgHandlerFlag() { |
| |
| @Override |
| public String getPurposeSnippet() { |
| return "Create scripts for a ConstantsWithLookup interface " |
| + "rather than a Constants one."; |
| } |
| |
| @Override |
| public String getLabel() { |
| return "createConstantsWithLookup"; |
| } |
| |
| @Override |
| public boolean setFlag(boolean value) { |
| if (value && argValue == Messages.class) { |
| System.err.println("-createMessages cannot be used with -createConstantsWithLookup"); |
| return false; |
| } |
| argValue = value ? ConstantsWithLookup.class : Constants.class; |
| return true; |
| } |
| |
| @Override |
| public boolean getDefaultValue() { |
| return argValue == ConstantsWithLookup.class; |
| } |
| }; |
| } |
| return cwlArgHandler; |
| } |
| |
| /** |
| * Creates scripts for a Messages interface rather than a Constants one. |
| * |
| * @return a flag argument handler |
| */ |
| ArgHandler getMessagesArgHandler() { |
| if (messagesArgHandler == null) { |
| messagesArgHandler = new ArgHandlerFlag() { |
| |
| @Override |
| public String getPurposeSnippet() { |
| return "Create scripts for a Messages interface rather than a Constants one."; |
| } |
| |
| @Override |
| public String getLabel() { |
| return "createMessages"; |
| } |
| |
| @Override |
| public boolean setFlag(boolean value) { |
| if (value && argValue == ConstantsWithLookup.class) { |
| System.err.println("-createMessages cannot be used with -createConstantsWithLookup"); |
| return false; |
| } |
| argValue = value ? Messages.class : Constants.class; |
| return true; |
| } |
| |
| @Override |
| public boolean getDefaultValue() { |
| return argValue == Messages.class; |
| } |
| }; |
| } |
| return messagesArgHandler; |
| } |
| } |