directsetter.java

来自「这个项目是为Java平台提供一个灵活的日历组件(Ok)」· Java 代码 · 共 353 行

JAVA
353
字号
/* *  NachoCalendar * * Project Info:  http://nachocalendar.sf.net * * This library is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as published by the * Free Software Foundation; * either version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A * PARTICULAR PURPOSE. * See the GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this library; if not, write to the Free Software Foundation, Inc., * 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. * * [Java is a trademark or registered trademark of Sun Microsystems, Inc. * in the United States and other countries.] * * Changes * ------- * * ------- * * DateFieldSetter.java * * Created on Dec 17, 2005 */package net.sf.nachocalendar.customizer;import java.text.SimpleDateFormat;import java.util.Calendar;import net.sf.nachocalendar.components.CalendarPanel;import net.sf.nachocalendar.components.DateField;import net.sf.nachocalendar.components.DatePanel;import net.sf.nachocalendar.components.DayRenderer;import net.sf.nachocalendar.components.HeaderRenderer;import net.sf.nachocalendar.model.DataModel;import net.sf.nachocalendar.model.DateSelectionModel;/** * Class that sets properties of components * using direct calls to methods. *  * @author Ignacio Merani * *  */public class DirectSetter implements PropertiesSetter {    private boolean initialized;    private boolean allowsInvalid, printMoon;    private boolean showOkCancel, showToday, antiAliased;    private int firstDayOfWeek = Calendar.SUNDAY;    private Class headerRenderer, model, renderer;    private String todayCaption;    private boolean[] workingDays;    private int selectionMode = DateSelectionModel.MULTIPLE_INTERVAL_SELECTION;    private int orientation = CalendarPanel.HORIZONTAL;    private int scrollPosition = CalendarPanel.LEFT;    private int yearPosition = CalendarPanel.UP;    private String dateFormat;        /**     * Constructor with a Customizer.     * @param customizer     */    public DirectSetter(Customizer customizer) {        init(customizer);    }        /**     * Default constructor, must add a     * Customizer via setter.     *     */    public DirectSetter() {}        /**     * Sets the current customizer.     *      * @param customizer     */    public void setCustomizer(Customizer customizer) {        init(customizer);    }    private void init(Customizer customizer) {        String first = customizer.getString("firstDayOfWeek");        if (first != null) {            if (first.toLowerCase().equals("monday")) {                this.firstDayOfWeek = Calendar.MONDAY;            }        }                allowsInvalid = customizer.getBoolean("allowsInvalid");                antiAliased = customizer.getBoolean("antiAliased");                String dateFormat = customizer.getString("dateFormat");        if (dateFormat != null) {            this.dateFormat = dateFormat;        }                String headerRenderer = customizer.getString("headerRenderer");        if (headerRenderer != null) {            this.headerRenderer = loadClass(headerRenderer);        }                String model = customizer.getString("model");        if (model != null) {            this.model = loadClass(model);        }                printMoon = customizer.getBoolean("printMoon");                String renderer = customizer.getString("renderer");                if (renderer != null) {            this.renderer = loadClass(renderer);        }                showOkCancel = customizer.getBoolean("showOkCancel");        showToday = customizer.getBoolean("showToday");        todayCaption = customizer.getString("todayCaption");                String workingDays = customizer.getString("workingDays");        if (workingDays != null) {            String[] work = workingDays.split(",");            boolean[] wd = new boolean[7];            for (int i=0; i < work.length; i++) {                if (i == 7) break;                wd[i] = Boolean.valueOf(work[i]).booleanValue();            }            this.workingDays = wd;        }                String selection = customizer.getString("selectionMode");        if (selection != null) {            if (selection.toLowerCase().equals("singleinterval")) {                selectionMode = DateSelectionModel.SINGLE_INTERVAL_SELECTION;            }            if (selection.toLowerCase().equals("singleselection")) {                selectionMode = DateSelectionModel.SINGLE_SELECTION;            }        }                String orientation = customizer.getString("orientation");        if (orientation != null) {            if (orientation.toLowerCase().equals("vertical")) {                this.orientation = CalendarPanel.VERTICAL;            }        }                String scrollposition = customizer.getString("scrollPosition");        if (scrollposition != null) {            if (scrollposition.toLowerCase().equals("right")) {                this.scrollPosition = CalendarPanel.RIGHT;            }        }                String yearposition = customizer.getString("yearPosition");        if (yearposition != null) {            if (yearposition.toLowerCase().equals("down")) {                this.yearPosition = CalendarPanel.DOWN;            }        }        initialized=true;    }        private Class loadClass(String name) {        try {            return Class.forName(name);        } catch (ClassNotFoundException e) {            e.printStackTrace();            return null;        }    }        /* (non-Javadoc)     * @see net.sf.nachocalendar.customizer.PropertiesSetter#customize(net.sf.nachocalendar.components.DateField)     */    public void customize(DateField datefield) {        if (!initialized) {            throw new IllegalStateException("This setter is not initialized.");        }        datefield.setFirstDayOfWeek(firstDayOfWeek);                datefield.setAllowsInvalid(allowsInvalid);                datefield.setAntiAliased(antiAliased);                if (dateFormat != null) {            datefield.setDateFormat(new SimpleDateFormat(dateFormat));        }                if (headerRenderer != null) {            try {                datefield.setHeaderRenderer((HeaderRenderer) headerRenderer.newInstance());            } catch (InstantiationException e) {                e.printStackTrace();            } catch (IllegalAccessException e) {                e.printStackTrace();            }        }                if (model != null) {            try {                datefield.setModel((DataModel) model.newInstance());            } catch (InstantiationException e) {                e.printStackTrace();            } catch (IllegalAccessException e) {                e.printStackTrace();            }        }                datefield.setPrintMoon(printMoon);                if (renderer != null) {            try {                datefield.setRenderer((DayRenderer) renderer.newInstance());            } catch (InstantiationException e) {                e.printStackTrace();            } catch (IllegalAccessException e) {                e.printStackTrace();            }        }                datefield.setShowOkCancel(showOkCancel);        datefield.setShowToday(showToday);        if (todayCaption != null)            datefield.setTodayCaption(todayCaption);                if (workingDays != null) {            datefield.setWorkingDays(workingDays);        }            }        /* (non-Javadoc)     * @see net.sf.nachocalendar.customizer.PropertiesSetter#customize(net.sf.nachocalendar.components.CalendarPanel)     */    public void customize(CalendarPanel calendarpanel) {        if (!initialized) {            throw new IllegalStateException("This setter is not initialized.");        }        calendarpanel.setFirstDayOfWeek(firstDayOfWeek);                calendarpanel.setAntiAliased(antiAliased);        calendarpanel.setSelectionMode(selectionMode);        if (headerRenderer != null) {            try {                calendarpanel.setHeaderRenderer((HeaderRenderer) headerRenderer.newInstance());            } catch (InstantiationException e) {                e.printStackTrace();            } catch (IllegalAccessException e) {                e.printStackTrace();            }        }                if (model != null) {            try {                calendarpanel.setModel((DataModel) model.newInstance());            } catch (InstantiationException e) {                e.printStackTrace();            } catch (IllegalAccessException e) {                e.printStackTrace();            }        }                calendarpanel.setPrintMoon(printMoon);                if (renderer != null) {            try {                calendarpanel.setRenderer((DayRenderer) renderer.newInstance());            } catch (InstantiationException e) {                e.printStackTrace();            } catch (IllegalAccessException e) {                e.printStackTrace();            }        }                calendarpanel.setShowToday(showToday);        if (todayCaption != null)            calendarpanel.setTodayCaption(todayCaption);                if (workingDays != null) {            calendarpanel.setWorkingdays(workingDays);        }                calendarpanel.setOrientation(orientation);        calendarpanel.setScrollPosition(scrollPosition);        calendarpanel.setYearPosition(yearPosition);    }        /* (non-Javadoc)     * @see net.sf.nachocalendar.customizer.PropertiesSetter#customize(net.sf.nachocalendar.components.DatePanel)     */    public void customize(DatePanel datepanel) {        if (!initialized) {            throw new IllegalStateException("This setter is not initialized.");        }        datepanel.setFirstDayOfWeek(firstDayOfWeek);                datepanel.setAntiAliased(antiAliased);        datepanel.setSelectionMode(selectionMode);        if (headerRenderer != null) {            try {                datepanel.setHeaderRenderer((HeaderRenderer) headerRenderer.newInstance());            } catch (InstantiationException e) {                e.printStackTrace();            } catch (IllegalAccessException e) {                e.printStackTrace();            }        }                if (model != null) {            try {                datepanel.setModel((DataModel) model.newInstance());            } catch (InstantiationException e) {                e.printStackTrace();            } catch (IllegalAccessException e) {                e.printStackTrace();            }        }                datepanel.setPrintMoon(printMoon);                if (renderer != null) {            try {                datepanel.setRenderer((DayRenderer) renderer.newInstance());            } catch (InstantiationException e) {                e.printStackTrace();            } catch (IllegalAccessException e) {                e.printStackTrace();            }        }                datepanel.setShowToday(showToday);        if (todayCaption != null)            datepanel.setTodayCaption(todayCaption);                if (workingDays != null) {            datepanel.setWorkingDays(workingDays);        }    }}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?