CalendarCalc.java revision bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7
1bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert/* 2bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert ******************************************************************************* 3bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * Copyright (C) 1997-2008, International Business Machines Corporation and * 4bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * others. All Rights Reserved. * 5bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert ******************************************************************************* 6bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert */ 7bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert 8bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubertpackage com.ibm.icu.dev.demo.calendar; 9bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert 10bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubertimport java.awt.Button; 11bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubertimport java.awt.Checkbox; 12bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubertimport java.awt.CheckboxGroup; 13bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubertimport java.awt.Choice; 14bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubertimport java.awt.Component; 15bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubertimport java.awt.Container; 16bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubertimport java.awt.FlowLayout; 17bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubertimport java.awt.Font; 18bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubertimport java.awt.Frame; 19bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubertimport java.awt.GridLayout; 20bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubertimport java.awt.Label; 21bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubertimport java.awt.Panel; 22bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubertimport java.awt.TextField; 23bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubertimport java.awt.event.ActionEvent; 24bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubertimport java.awt.event.ActionListener; 25bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubertimport java.awt.event.ItemEvent; 26bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubertimport java.awt.event.ItemListener; 27bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubertimport java.awt.event.KeyEvent; 28bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubertimport java.awt.event.WindowEvent; 29bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubertimport java.text.ParsePosition; 30bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubertimport java.util.Date; 31bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubertimport java.util.Locale; 32bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert 33bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubertimport javax.swing.JTextField; 34bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert 35bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubertimport com.ibm.icu.dev.demo.impl.DemoApplet; 36bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubertimport com.ibm.icu.dev.demo.impl.DemoUtility; 37bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubertimport com.ibm.icu.text.DateFormat; 38bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubertimport com.ibm.icu.text.SimpleDateFormat; 39bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubertimport com.ibm.icu.util.BuddhistCalendar; 40bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubertimport com.ibm.icu.util.Calendar; 41bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubertimport com.ibm.icu.util.GregorianCalendar; 42bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubertimport com.ibm.icu.util.HebrewCalendar; 43bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubertimport com.ibm.icu.util.IslamicCalendar; 44bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubertimport com.ibm.icu.util.JapaneseCalendar; 45bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubertimport com.ibm.icu.util.TimeZone; 46bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert 47bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert/** 48bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * CalendarCalc demonstrates how Date/Time formatter works. 49bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert */ 50bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubertpublic class CalendarCalc extends DemoApplet 51bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert{ 52bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert /** 53bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * For serialization 54bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert */ 55bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert private static final long serialVersionUID = 4540103433916539296L; 56bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert 57bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert /** 58bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * The main function which defines the behavior of the MultiCalendarDemo 59bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * applet when an applet is started. 60bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert */ 61bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert public static void main(String argv[]) { 62bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert new CalendarCalc().showDemo(); 63bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert } 64bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert 65bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert /** 66bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * This creates a CalendarCalcFrame for the demo applet. 67bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert */ 68bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert public Frame createDemoFrame(DemoApplet applet) { 69bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert return new CalendarCalcFrame(applet); 70bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert } 71bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert} 72bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert 73bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert/** 74bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * A Frame is a top-level window with a title. The default layout for a frame 75bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * is BorderLayout. The CalendarCalcFrame class defines the window layout of 76bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * MultiCalendarDemo. 77bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert */ 78bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubertclass CalendarCalcFrame extends Frame implements ActionListener 79bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert{ 80bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert /** 81bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * For serialization 82bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert */ 83bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert private static final long serialVersionUID = 8901485296258761846L; 84bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert 85bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert static final Locale[] locales = DemoUtility.getG7Locales(); 86bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert 87bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert private DemoApplet applet; 88bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert private long time = System.currentTimeMillis(); 89bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert 90bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert private static final RollAddField kRollAddFields[] = { 91bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert new RollAddField(Calendar.YEAR, "Year" ), 92bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert new RollAddField(Calendar.MONTH, "Month" ), 93bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert new RollAddField(Calendar.WEEK_OF_MONTH, "Week of Month" ), 94bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert new RollAddField(Calendar.WEEK_OF_YEAR, "Week of Year" ), 95bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert new RollAddField(Calendar.DAY_OF_MONTH, "Day of Month" ), 96bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert new RollAddField(Calendar.DAY_OF_WEEK, "Day of Week" ), 97bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert new RollAddField(Calendar.DAY_OF_WEEK_IN_MONTH, "Day of Week in Month" ), 98bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert new RollAddField(Calendar.DAY_OF_YEAR, "Day of Year" ), 99bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert new RollAddField(Calendar.AM_PM, "AM/PM" ), 100bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert new RollAddField(Calendar.HOUR_OF_DAY, "Hour of day" ), 101bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert new RollAddField(Calendar.HOUR, "Hour" ), 102bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert new RollAddField(Calendar.MINUTE, "Minute" ), 103bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert new RollAddField(Calendar.SECOND, "Second" ), 104bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert }; 105bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert 106bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert /** 107bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * Constructs a new CalendarCalcFrame that is initially invisible. 108bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert */ 109bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert public CalendarCalcFrame(DemoApplet applet) 110bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert { 111bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert super("Multiple Calendar Demo"); 112bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert this.applet = applet; 113bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert init(); 114bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert start(); 115bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert } 116bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert 117bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert /** 118bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * Initializes the applet. You never need to call this directly, it 119bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * is called automatically by the system once the applet is created. 120bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert */ 121bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert public void init() 122bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert { 123bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert buildGUI(); 124bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert 125bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert patternText.setText( calendars[0].toPattern() ); 126bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert 127bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert // Force an update of the display 128bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert cityChanged(); 129bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert millisFormat(); 130bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert enableEvents(KeyEvent.KEY_RELEASED); 131bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert enableEvents(WindowEvent.WINDOW_CLOSING); 132bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert } 133bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert 134bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert //------------------------------------------------------------ 135bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert // package private 136bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert //------------------------------------------------------------ 137bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert void addWithFont(Container container, Component foo, Font font) { 138bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert if (font != null) 139bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert foo.setFont(font); 140bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert container.add(foo); 141bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert } 142bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert 143bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert /** 144bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * Called to start the applet. You never need to call this method 145bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * directly, it is called when the applet's document is visited. 146bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert */ 147bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert public void start() 148bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert { 149bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert // do nothing 150bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert } 151bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert 152bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert TextField patternText; 153bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert 154bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert Choice dateMenu; 155bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert Choice localeMenu; 156bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert 157bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert Button up; 158bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert Button down; 159bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert 160bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert Checkbox getRoll; 161bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert Checkbox getAdd; 162bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert 163bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert public void buildGUI() 164bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert { 165bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert setBackground(DemoUtility.bgColor); 166bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert setLayout(new FlowLayout()); // shouldn't be necessary, but it is. 167bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert 168bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert// TITLE 169bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert Label label1=new Label("Calendar Converter", Label.CENTER); 170bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert label1.setFont(DemoUtility.titleFont); 171bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert add(label1); 172bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert add(DemoUtility.createSpacer()); 173bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert 174bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert// IO Panel 175bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert Panel topPanel = new Panel(); 176bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert topPanel.setLayout(new FlowLayout()); 177bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert 178bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert CheckboxGroup group1= new CheckboxGroup(); 179bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert 180bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert // Set up the controls for each calendar we're demonstrating 181bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert for (int i = 0; i < calendars.length; i++) 182bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert { 183bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert Label label = new Label(calendars[i].name, Label.RIGHT); 184bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert label.setFont(DemoUtility.labelFont); 185bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert topPanel.add(label); 186bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert 187bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert topPanel.add(calendars[i].text); 188bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert 189bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert final int j = i; 190bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert calendars[i].text.addActionListener( new ActionListener() { 191bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert public void actionPerformed(ActionEvent e) { 192bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert textChanged(j); 193bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert } 194bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert } ); 195bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert 196bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert calendars[i].rollAdd.setCheckboxGroup(group1); 197bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert topPanel.add(calendars[i].rollAdd); 198bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert } 199bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert calendars[0].rollAdd.setState(true); // Make the first one selected 200bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert 201bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert Label label4=new Label("Pattern", Label.RIGHT); 202bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert label4.setFont(DemoUtility.labelFont); 203bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert topPanel.add(label4); 204bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert 205bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert patternText=new TextField(FIELD_COLUMNS); 206bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert patternText.setFont(DemoUtility.editFont); 207bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert topPanel.add(patternText); 208bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert topPanel.add(new Label("")); 209bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert 210bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert DemoUtility.fixGrid(topPanel,3); 211bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert add(topPanel); 212bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert add(DemoUtility.createSpacer()); 213bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert 214bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert// ROLL / ADD 215bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert Panel rollAddPanel=new Panel(); 216bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert { 217bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert rollAddPanel.setLayout(new FlowLayout()); 218bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert 219bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert Panel rollAddBoxes = new Panel(); 220bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert { 221bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert rollAddBoxes.setLayout(new GridLayout(2,1)); 222bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert CheckboxGroup group2= new CheckboxGroup(); 223bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert getRoll = new Checkbox("Roll",group2, false); 224bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert getAdd = new Checkbox("Add",group2, true); 225bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert 226bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert rollAddBoxes.add(getRoll); 227bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert rollAddBoxes.add(getAdd); 228bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert } 229bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert 230bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert Label dateLabel=new Label("Date Fields"); 231bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert dateLabel.setFont(DemoUtility.labelFont); 232bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert 233bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert dateMenu= new Choice(); 234bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert dateMenu.setBackground(DemoUtility.choiceColor); 235bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert for (int i = 0; i < kRollAddFields.length; i++) { 236bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert dateMenu.addItem(kRollAddFields[i].name); 237bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert if (kRollAddFields[i].field == Calendar.MONTH) { 238bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert dateMenu.select(i); 239bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert } 240bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert } 241bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert 242bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert Panel upDown = new Panel(); 243bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert { 244bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert upDown.setLayout(new GridLayout(2,1)); 245bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert 246bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert // *** If the images are not found, we use the label. 247bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert up = new Button("^"); 248bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert down = new Button("v"); 249bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert up.setBackground(DemoUtility.bgColor); 250bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert down.setBackground(DemoUtility.bgColor); 251bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert upDown.add(up); 252bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert upDown.add(down); 253bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert up.addActionListener(this); 254bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert down.addActionListener(this); 255bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert } 256bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert 257bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert rollAddPanel.add(dateLabel); 258bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert rollAddPanel.add(dateMenu); 259bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert rollAddPanel.add(rollAddBoxes); 260bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert rollAddPanel.add(upDown); 261bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert 262bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert } 263bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert Panel localePanel = new Panel(); 264bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert { 265bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert // Make the locale popup menus 266bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert localeMenu= new Choice(); 267bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert Locale defaultLocale = Locale.getDefault(); 268bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert int bestMatch = -1, thisMatch = -1; 269bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert int selectMe = 0; 270bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert 271bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert for (int i = 0; i < locales.length; i++) { 272bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert if (i > 0 && locales[i].getLanguage().equals(locales[i-1].getLanguage()) || 273bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert i < locales.length - 1 && 274bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert locales[i].getLanguage().equals(locales[i+1].getLanguage())) 275bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert { 276bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert localeMenu.addItem( locales[i].getDisplayName() ); 277bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert } else { 278bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert localeMenu.addItem( locales[i].getDisplayLanguage()); 279bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert } 280bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert 281bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert thisMatch = DemoUtility.compareLocales(locales[i], defaultLocale); 282bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert 283bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert if (thisMatch >= bestMatch) { 284bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert bestMatch = thisMatch; 285bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert selectMe = i; 286bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert } 287bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert } 288bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert 289bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert localeMenu.setBackground(DemoUtility.choiceColor); 290bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert localeMenu.select(selectMe); 291bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert 292bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert Label localeLabel =new Label("Display Locale"); 293bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert localeLabel.setFont(DemoUtility.labelFont); 294bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert 295bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert localePanel.add(localeLabel); 296bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert localePanel.add(localeMenu); 297bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert DemoUtility.fixGrid(localePanel,2); 298bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert 299bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert localeMenu.addItemListener( new ItemListener() { 300bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert public void itemStateChanged(ItemEvent e) { 301bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert Locale loc = locales[localeMenu.getSelectedIndex()]; 302bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert System.out.println("Change locale to " + loc.getDisplayName()); 303bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert 304bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert for (int i = 0; i < calendars.length; i++) { 305bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert calendars[i].setLocale(loc); 306bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert } 307bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert millisFormat(); 308bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert } 309bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert } ); 310bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert } 311bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert add(rollAddPanel); 312bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert add(DemoUtility.createSpacer()); 313bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert add(localePanel); 314bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert add(DemoUtility.createSpacer()); 315bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert 316bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert// COPYRIGHT 317bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert Panel copyrightPanel = new Panel(); 318bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert addWithFont (copyrightPanel,new Label(DemoUtility.copyright1, Label.LEFT), 319bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert DemoUtility.creditFont); 320bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert DemoUtility.fixGrid(copyrightPanel,1); 321bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert add(copyrightPanel); 322bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert } 323bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert 324bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert /** 325bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * This function is called when users change the pattern text. 326bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert */ 327bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert public void setFormatFromPattern() { 328bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert String timePattern = patternText.getText(); 329bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert 330bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert for (int i = 0; i < calendars.length; i++) { 331bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert calendars[i].applyPattern(timePattern); 332bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert } 333bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert 334bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert millisFormat(); 335bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert } 336bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert 337bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert /** 338bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * This function is called when it is necessary to parse the time 339bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * string in one of the formatted date fields 340bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert */ 341bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert public void textChanged(int index) { 342bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert String rightString = calendars[index].text.getText(); 343bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert 344bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert ParsePosition status = new ParsePosition(0); 345bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert 346bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert if (rightString.length() == 0) 347bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert { 348bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert errorText("Error: no input to parse!"); 349bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert return; 350bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert } 351bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert 352bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert try { 353bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert Date date = calendars[index].format.parse(rightString, status); 354bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert time = date.getTime(); 355bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert } 356bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert catch (Exception e) { 357bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert for (int i = 0; i < calendars.length; i++) { 358bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert if (i != index) { 359bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert calendars[i].text.setText("ERROR"); 360bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert } 361bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert } 362bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert errorText("Exception: " + e.getClass().toString() + " parsing: "+rightString); 363bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert return; 364bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert } 365bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert 366bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert int start = calendars[index].text.getSelectionStart(); 367bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert int end = calendars[index].text.getSelectionEnd(); 368bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert 369bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert millisFormat(); 370bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert 371bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert calendars[index].text.select(start,end); 372bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert } 373bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert 374bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert /** 375bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * This function is called when it is necessary to format the time 376bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * in the "Millis" text field. 377bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert */ 378bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert public void millisFormat() { 379bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert String out = ""; 380bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert 381bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert for (int i = 0; i < calendars.length; i++) { 382bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert try { 383bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert out = calendars[i].format.format(new Date(time)); 384bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert calendars[i].text.setText(out); 385bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert } 386bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert catch (Exception e) { 387bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert calendars[i].text.setText("ERROR"); 388bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert errorText("Exception: " + e.getClass().toString() + " formatting " 389bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert + calendars[i].name + " " + time); 390bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert } 391bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert } 392bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert } 393bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert 394bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert 395bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert /** 396bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * This function is called when users change the pattern text. 397bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert */ 398bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert public void patternTextChanged() { 399bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert setFormatFromPattern(); 400bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert } 401bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert 402bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert /** 403bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * This function is called when users select a new representative city. 404bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert */ 405bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert public void cityChanged() { 406bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert TimeZone timeZone = TimeZone.getDefault(); 407bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert 408bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert for (int i = 0; i < calendars.length; i++) { 409bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert calendars[i].format.setTimeZone(timeZone); 410bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert } 411bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert millisFormat(); 412bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert } 413bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert 414bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert /** 415bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * This function is called when users select a new time field 416bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * to add or roll its value. 417bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert */ 418bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert public void dateFieldChanged(boolean isUp) { 419bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert int field = kRollAddFields[dateMenu.getSelectedIndex()].field; 420bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert 421bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert for (int i = 0; i < calendars.length; i++) 422bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert { 423bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert if (calendars[i].rollAdd.getState()) 424bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert { 425bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert Calendar c = calendars[i].calendar; 426bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert c.setTime(new Date(time)); 427bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert 428bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert if (getAdd.getState()) { 429bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert c.add(field, isUp ? 1 : -1); 430bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert } else { 431bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert c.roll(field, isUp); 432bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert } 433bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert 434bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert time = c.getTime().getTime(); 435bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert millisFormat(); 436bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert break; 437bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert } 438bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert } 439bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert } 440bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert 441bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert /** 442bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * Print out the error message while debugging this program. 443bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert */ 444bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert public void errorText(String s) 445bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert { 446bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert if (true) { 447bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert System.out.println(s); 448bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert } 449bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert } 450bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert 451bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert /** 452bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * Called if an action occurs in the CalendarCalcFrame object. 453bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert */ 454bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert public void actionPerformed(ActionEvent evt) 455bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert { 456bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert // *** Button events are handled here. 457bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert Object obj = evt.getSource(); 458bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert System.out.println("action " + obj); 459bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert if (obj instanceof Button) { 460bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert if (evt.getSource() == up) { 461bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert dateFieldChanged(false); 462bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert } else 463bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert if (evt.getSource() == down) { 464bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert dateFieldChanged(true); 465bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert } 466bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert } 467bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert } 468bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert 469bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert /** 470bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * Handles the event. Returns true if the event is handled and should not 471bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * be passed to the parent of this component. The default event handler 472bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert * calls some helper methods to make life easier on the programmer. 473bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert */ 474bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert protected void processKeyEvent(KeyEvent evt) 475bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert { 476bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert System.out.println("key " + evt); 477bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert if (evt.getID() == KeyEvent.KEY_RELEASED) { 478bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert if (evt.getSource() == patternText) { 479bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert patternTextChanged(); 480bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert } 481bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert else { 482bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert for (int i = 0; i < calendars.length; i++) { 483bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert if (evt.getSource() == calendars[i].text) { 484bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert textChanged(i); 485bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert } 486bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert } 487bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert } 488bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert } 489bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert } 490bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert 491bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert protected void processWindowEvent(WindowEvent evt) 492bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert { 493bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert System.out.println("window " + evt); 494bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert if (evt.getID() == WindowEvent.WINDOW_CLOSING && 495bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert evt.getSource() == this) { 496bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert this.hide(); 497bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert this.dispose(); 498bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert 499bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert if (applet != null) { 500bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert applet.demoClosed(); 501bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert } else System.exit(0); 502bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert } 503bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert } 504bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert 505bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert /* 506bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert protected void processEvent(AWTEvent evt) 507bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert { 508bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert if (evt.getID() == AWTEvent. Event.ACTION_EVENT && evt.target == up) { 509bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert dateFieldChanged(true); 510bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert return true; 511bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert } 512bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert else if (evt.id == Event.ACTION_EVENT && evt.target == down) { 513bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert dateFieldChanged(false); 514bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert return true; 515bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert } 516bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert } 517bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert */ 518bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert 519bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert private static final int FIELD_COLUMNS = 35; 520bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert 521bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert 522bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert class CalendarRec { 523bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert public CalendarRec(String nameStr, Calendar cal) 524bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert { 525bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert name = nameStr; 526bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert calendar = cal; 527bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert rollAdd = new Checkbox(); 528bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert 529bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert text = new JTextField("",FIELD_COLUMNS); 530bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert text.setFont(DemoUtility.editFont); 531bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert 532bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert format = DateFormat.getDateInstance(cal, DateFormat.FULL, 533bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert Locale.getDefault()); 534bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert //format.applyPattern(DEFAULT_FORMAT); 535bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert } 536bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert 537bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert public void setLocale(Locale loc) { 538bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert String pattern = toPattern(); 539bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert 540bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert format = DateFormat.getDateInstance(calendar, DateFormat.FULL, 541bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert loc); 542bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert applyPattern(pattern); 543bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert } 544bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert 545bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert public void applyPattern(String pattern) { 546bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert if (format instanceof SimpleDateFormat) { 547bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert ((SimpleDateFormat)format).applyPattern(pattern); 548bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert//hey {al} - 549bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert// } else if (format instanceof java.text.SimpleDateFormat) { 550bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert// ((java.text.SimpleDateFormat)format).applyPattern(pattern); 551bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert } 552bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert } 553bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert 554bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert private String toPattern() { 555bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert if (format instanceof SimpleDateFormat) { 556bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert return ((SimpleDateFormat)format).toPattern(); 557bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert//hey {al} - 558bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert// } else if (format instanceof java.text.SimpleDateFormat) { 559bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert// return ((java.text.SimpleDateFormat)format).toPattern(); 560bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert } 561bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert return ""; 562bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert } 563bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert 564bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert Calendar calendar; 565bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert DateFormat format; 566bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert String name; 567bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert JTextField text; 568bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert Checkbox rollAdd; 569bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert } 570bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert 571bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert private final CalendarRec[] calendars = { 572bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert new CalendarRec("Gregorian", new GregorianCalendar()), 573bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert new CalendarRec("Hebrew", new HebrewCalendar()), 574bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert new CalendarRec("Islamic (civil)", makeIslamic(true)), 575bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert new CalendarRec("Islamic (true)", makeIslamic(false)), 576bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert new CalendarRec("Buddhist", new BuddhistCalendar()), 577bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert new CalendarRec("Japanese", new JapaneseCalendar()), 578bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert// new CalendarRec("Chinese", new ChineseCalendar()), 579bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert }; 580bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert 581bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert static private final Calendar makeIslamic(boolean civil) { 582bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert IslamicCalendar cal = new IslamicCalendar(); 583bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert cal.setCivil(civil); 584bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert return cal; 585bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert } 586bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert} 587bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert 588bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubertclass RollAddField { 589bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert RollAddField(int field, String name) { 590bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert this.field = field; 591bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert this.name = name; 592bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert } 593bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert int field; 594bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert String name; 595bd1cbb618dcaa1ac6ba7c77dece35cb79593a5d7Fredrik Roubert} 596