/* * Copyright (C) 2012 The Android Open Source Project * * 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.motorola.studio.android.generateviewbylayout.model; import java.util.HashMap; import java.util.Map; /** * Model representing an Android GUI item that can be inserted into activity / fragment */ public class LayoutNode { /** * Methods available for setting View state (eg.: RadioButton, Spinner, EditText) */ protected enum ViewSetMethods { setChecked, setSelected, setText, setSelection, setProgress } /** * Methods available for getting View state (eg.: RadioButton, Spinner, EditText) */ protected enum ViewGetMethods { isChecked, isSelected, getText, getSelectedItemPosition, getProgress } /** * Methods available for Preference putters */ protected enum PreferenceSetMethods { putInt, putBoolean, putString } /** * Methods available for Preference getters */ protected enum PreferenceGetMethods { getInt, getBoolean, getString } /** * Available options for save/restore operations */ public enum ViewProperties { ViewStateSetMethod, ViewStateGetMethod, PreferenceSetMethod, PreferenceGetMethod, ViewStateValueType } /** * Available items to generate code for */ public static enum LayoutNodeViewType { Button, ToggleButton, ImageButton, CheckBox, RadioButton, EditText, Spinner, Gallery, RatingBar, SeekBar } protected final Map<ViewProperties, String> properties = new HashMap<LayoutNode.ViewProperties, String>(); private boolean isFragmentPlaceholder = false; private boolean isLayout = false; private boolean isGUIItem = false; private String nodeType; private String nodeId; private String onClick; private boolean insertCode = false; private boolean saveState = false; private boolean alreadySaved = false; private boolean alreadyDeclaredInCode = false; private String clazzName; //used for fragments only private boolean alreadyRestored; /** * @return the clazzName (given by android:name attribute) */ public String getClazzName() { return clazzName; } /** * @param clazzName the clazzName to set */ public void setClazzName(String clazzName) { this.clazzName = clazzName; } /** * @return true if it is a <fragment> element, false otherwise */ public boolean isFragmentPlaceholder() { return isFragmentPlaceholder; } /** * @param isFragmentPlaceholder the isFragmentPlaceholder to set */ public void setFragmentPlaceholder(boolean isFragmentPlaceholder) { this.isFragmentPlaceholder = isFragmentPlaceholder; } /** * @return true if element is a layout, false otherwise (if it is a GUI item or fragment) */ public boolean isLayout() { return isLayout; } public void setLayout(boolean isLayout) { this.isLayout = isLayout; } /** * @return true if it is a GUI Item (Button, EditText, etc) element */ public boolean isGUIItem() { return isGUIItem; } public void setGUIItem(boolean isGUIItem) { this.isGUIItem = isGUIItem; } /** * Type depends on XML element (eg.: <button>) */ public String getNodeType() { return nodeType; } public void setNodeType(String nodeType) { this.nodeType = nodeType; } /** * @return @return value available on android:id attribute */ public String getNodeId() { return nodeId; } public void setNodeId(String nodeId) { this.nodeId = nodeId; } /** * @return value available on android:onClick attribute */ public String getOnClick() { return onClick; } public void setOnClick(String onClick) { this.onClick = onClick; } /** * @return true if user marked in the dialog/wizard to insert the code for this layout node */ public boolean shouldInsertCode() { return insertCode; } public void setInsertCode(boolean insertCode) { this.insertCode = insertCode; } /** * @return true if the element is already declared on code (according to code visitors) */ public boolean isAlreadyDeclaredInCode() { return alreadyDeclaredInCode; } /** * @param alreadyDeclaredInCode the alreadyDeclaredInCode to set */ public void setAlreadyDeclaredInCode(boolean alreadyDeclaredInCode) { this.alreadyDeclaredInCode = alreadyDeclaredInCode; } /** * @return true if need to save/restore state, false otherwise */ public boolean getSaveState() { return saveState; } /** * @param saveState the saveState to set */ public void setSaveState(boolean saveState) { this.saveState = saveState; } /** * @return true if already has code to save state */ public boolean isAlreadySaved() { return alreadySaved; } public void setAlreadySaved(boolean alreadySaved) { this.alreadySaved = alreadySaved; } /** * @return true if already has code to restore state */ public boolean isAlreadyRestored() { return alreadyRestored; } public void setAlreadyRestored(boolean alreadyRestored) { this.alreadyRestored = alreadyRestored; } public String getProperty(ViewProperties property) { return properties.get(property); } }