Android Open Source - mobilepower-android Date Control






From Project

Back to project page mobilepower-android.

License

The source code is released under:

Apache License

If you think the Android project mobilepower-android listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

/*
 * Copyright (C) 2013 Dario Scoppelletti, <http://www.scoppelletti.it/>.
 * /*from   w  w w . j  ava  2s.  co  m*/
 * 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 it.scoppelletti.mobilepower.widget;

import java.text.*;
import android.app.*;
import android.content.*;
import android.os.*;
import android.util.*;
import android.view.*;
import android.widget.*;
import org.apache.commons.lang3.*;
import org.slf4j.*;
import it.scoppelletti.mobilepower.app.*;
import it.scoppelletti.mobilepower.types.*;
import it.scoppelletti.mobilepower.ui.resources.R;

/**
 * Controllo per una data.
 * 
 * @since 1.0
 */
public final class DateControl extends CompoundControl {
    private static final String STATE_DIALOGTAG = "dialogTag";
    private static final String STATE_ISEMPTYALLOWED = "isEmptyAllowed";
    private static final String STATE_ISRESETENABLED = "isResetEnabled";
    private static final String STATE_VALUE = "value";
    private static final String STATE_ERROR = "error";
    private static final Logger myLogger = LoggerFactory.getLogger(
            "DateControl");
    private String myDialogTag;
    private boolean myIsEmptyAllowed;
    private boolean myIsResetEnabled;
    private SimpleDate myValue;
    private EditText myValueControl;    
    
    /**
     * Costruttore.
     * 
     * @param ctx Contesto.
     */
    public DateControl(Context ctx) {
        super(ctx);    
        init(ctx);
    }
    
    /**
     * Costruttore.
     * 
     * @param ctx   Contesto.
     * @param attrs Attributi.
     */
    public DateControl(Context ctx, AttributeSet attrs) {
        super(ctx, attrs);

        int i, n;
        String name;
                        
        myIsEmptyAllowed = true;
        myIsResetEnabled = false;
        
        n = attrs.getAttributeCount();
        for (i = 0; i < n; i++) {
            name = attrs.getAttributeName(i);
            if (DateControl.STATE_DIALOGTAG.equals(name)) {
                myDialogTag = attrs.getAttributeValue(i); 
            } else if (DateControl.STATE_ISEMPTYALLOWED.equals(name)) {
                myIsEmptyAllowed = attrs.getAttributeBooleanValue(i,
                        myIsEmptyAllowed);
            } else if (DateControl.STATE_ISRESETENABLED.equals(name)) {
                myIsResetEnabled = attrs.getAttributeBooleanValue(i,
                        myIsResetEnabled);
            }
        }
        
        init(ctx);
    }   
    
    /**
     * Inizializzazione.
     * 
     * @param ctx Contesto.
     */
    private void init(Context ctx) {
        View view;
        ImageButton cmd;
        LayoutInflater inflater;
        
        inflater = LayoutInflater.from(ctx);
        view = inflater.inflate(R.layout.datecontrol, this, false);
        addView(view);
    
        myValueControl = (EditText) findViewById(R.id.txt_value);
        myValueControl.setKeyListener(null);
        
        cmd = (ImageButton) findViewById(R.id.cmd_set);
        cmd.setOnClickListener(new View.OnClickListener() {            
            public void onClick(View view) {
                onSetClick();
            }
        });       
        
        setValue(SimpleDate.NIL);
        
        cmd = (ImageButton) findViewById(R.id.cmd_reset);
        if (myIsResetEnabled) {
            cmd.setOnClickListener(new View.OnClickListener() {            
                public void onClick(View view) {
                    setValue(SimpleDate.NIL);
                }
            });              
        } else {            
            cmd.setVisibility(View.GONE);
        }       
    }   
    
    /**
     * Restituisce il valore.
     * 
     * @return Valore.
     */
    public SimpleDate getValue() {
        return myValue;
    }
    
    /**
     * Imposta il valore.
     * 
     * @param value Valore.
     */
    public void setValue(SimpleDate value) {
        String s;
        DateFormat fmt;
        
        if (!myIsEmptyAllowed && ValueTools.isNullOrEmpty(value)) {
            value = SimpleDate.getToday();
        }
        
        myValue = value;
        if (ValueTools.isNullOrEmpty(myValue)) {
            s = StringUtils.EMPTY;
        } else {
            fmt = android.text.format.DateFormat.getDateFormat(getContext());
            s = fmt.format(myValue.toCalendar().getTime());
        }
        
        myValueControl.setText(s);
        myValueControl.setError(null);
    }
    
    /**
     * Imposta il messaggio di errore.
     * 
     * @param value Valore.
     */
    public void setError(CharSequence value) {
        myValueControl.setError(value);
    }
    
    /**
     * Restituisce il tag del dialogo di selezione della data.
     * 
     * @return Valore.
     */
    public String getDialogTag() {
        return myDialogTag;
    }
    
    /**
     * Imposta il tag del dialogo di selezione della data.
     * 
     * @param value Valore.
     */
    public void setDialogTag(String value) {
        myDialogTag = value;
    }
    
    protected void onRestoreInstanceState(Bundle savedInstanceState) {
        myDialogTag = savedInstanceState.getString(
                DateControl.STATE_DIALOGTAG);
        myIsEmptyAllowed = savedInstanceState.getBoolean(
                DateControl.STATE_ISEMPTYALLOWED, true);
        myIsResetEnabled = savedInstanceState.getBoolean(
                DateControl.STATE_ISRESETENABLED, false);        
        setValue((SimpleDate) savedInstanceState.getParcelable(
                DateControl.STATE_VALUE));
        myValueControl.setError(savedInstanceState.getCharSequence(
                DateControl.STATE_ERROR));                
    }
    
    protected void onSaveInstanceState(Bundle outState) {
        if (!StringUtils.isBlank(myDialogTag)) {
            outState.putString(DateControl.STATE_DIALOGTAG, myDialogTag);
        }        
        if (myIsEmptyAllowed) {
            outState.putBoolean(DateControl.STATE_ISEMPTYALLOWED, true);
        }
        if (myIsResetEnabled) {
            outState.putBoolean(DateControl.STATE_ISRESETENABLED, true);
        }        
        if (!ValueTools.isNullOrEmpty(myValue)) {
            outState.putParcelable(DateControl.STATE_VALUE, myValue);
        }
        if (myValueControl.getError() != null) {
            outState.putCharSequence(DateControl.STATE_ERROR,
                    myValueControl.getError());
        }
    }
    
    /**
     * Apre il dialogo di selezione della data.
     */
    private void onSetClick() {
        Context ctx;
        ActivitySupport activity;
        DatePickerDialogFragment dlg;
        
        ctx = getContext();
        if (!(ctx instanceof ActivitySupport)) {
            myLogger.error("Context not implement interface ActivitySupport.");
            return;
        }
        if (StringUtils.isBlank(myDialogTag)) {
            myLogger.error("Property dialogTag is not set.");
            return;            
        }
        
        dlg = DatePickerDialogFragment.newInstance(myValue);
        dlg.setOnDateSetListener(new DatePickerDialog.OnDateSetListener() {           
            public void onDateSet(DatePicker view, int year, int month,
                    int day) {
                doDateSet(year, month, day);
            }
        });
        
        activity = (ActivitySupport) ctx;     
        dlg.show(activity.getSupportFragmentManager(), myDialogTag);
    }
            
    /**
     * Gestisce la modifica della data.
     * 
     * @param year  Anno.
     * @param month Mese.
     * @parma day   Giorno.
     */
    private void doDateSet(int year, int month, int day) {
        setValue(new SimpleDate(year, month, day));
    }    
}




Java Source Code List

it.scoppelletti.mobilepower.app.AboutActivity.java
it.scoppelletti.mobilepower.app.AbstractActivity.java
it.scoppelletti.mobilepower.app.AbstractDialogFragment.java
it.scoppelletti.mobilepower.app.AbstractFragment.java
it.scoppelletti.mobilepower.app.AbstractPreferenceActivity.java
it.scoppelletti.mobilepower.app.ActionBarCompat.java
it.scoppelletti.mobilepower.app.ActionBarSupport.java
it.scoppelletti.mobilepower.app.ActivitySupport.java
it.scoppelletti.mobilepower.app.AppUtils.java
it.scoppelletti.mobilepower.app.CommonMenuFragment.java
it.scoppelletti.mobilepower.app.ConfirmDialogFragment.java
it.scoppelletti.mobilepower.app.DatePickerDialogFragment.java
it.scoppelletti.mobilepower.app.FragmentLayoutController.java
it.scoppelletti.mobilepower.app.FragmentSupport.java
it.scoppelletti.mobilepower.app.HelpActivity.java
it.scoppelletti.mobilepower.app.HelpDialogFragment.java
it.scoppelletti.mobilepower.app.MarketTagHandler.java
it.scoppelletti.mobilepower.app.ProgressDialogFragment.java
it.scoppelletti.mobilepower.app.ReleaseNoteActivity.java
it.scoppelletti.mobilepower.app.bluetooth.ActivityBTManager.java
it.scoppelletti.mobilepower.app.data.DatabaseConnectionManager.java
it.scoppelletti.mobilepower.app.data.DatabaseUpgradeTask.java
it.scoppelletti.mobilepower.app.security.ActivityLicenseClient.java
it.scoppelletti.mobilepower.app.security.LicenseBuyDialogFragment.java
it.scoppelletti.mobilepower.app.security.LicenseDemoDialogFragment.java
it.scoppelletti.mobilepower.app.security.LicenseRetryDialogFragment.java
it.scoppelletti.mobilepower.bluetooth.BTManager.java
it.scoppelletti.mobilepower.bluetooth.BTTask.java
it.scoppelletti.mobilepower.bluetooth.OnBTListener.java
it.scoppelletti.mobilepower.data.DatabaseUpgrader.java
it.scoppelletti.mobilepower.data.OnDatabaseConnectionListener.java
it.scoppelletti.mobilepower.graphics.GraphicTools.java
it.scoppelletti.mobilepower.graphics.SizeF.java
it.scoppelletti.mobilepower.io.IOTools.java
it.scoppelletti.mobilepower.media.DefaultOnScanCompletedListener.java
it.scoppelletti.mobilepower.os.AbstractAsyncTask.java
it.scoppelletti.mobilepower.os.AsyncTaskController.java
it.scoppelletti.mobilepower.os.AsyncTaskHost.java
it.scoppelletti.mobilepower.os.BuildCompat.java
it.scoppelletti.mobilepower.preference.AbstractDialogPreference.java
it.scoppelletti.mobilepower.preference.BTDevicePreference.java
it.scoppelletti.mobilepower.preference.ColorPreference.java
it.scoppelletti.mobilepower.preference.EditTextPreferenceEx.java
it.scoppelletti.mobilepower.preference.IntegerSpinnerPreference.java
it.scoppelletti.mobilepower.preference.PreferenceSavedState.java
it.scoppelletti.mobilepower.preference.SeekBarPreference.java
it.scoppelletti.mobilepower.provider.ContactsContractCompat.java
it.scoppelletti.mobilepower.reflect.MemberCache.java
it.scoppelletti.mobilepower.security.LicenseClient.java
it.scoppelletti.mobilepower.types.SimpleDate.java
it.scoppelletti.mobilepower.types.StringTools.java
it.scoppelletti.mobilepower.types.TimeTools.java
it.scoppelletti.mobilepower.types.ValueTools.java
it.scoppelletti.mobilepower.types.ValueType.java
it.scoppelletti.mobilepower.view.ViewSavedState.java
it.scoppelletti.mobilepower.widget.CompoundControl.java
it.scoppelletti.mobilepower.widget.DateControl.java
it.scoppelletti.mobilepower.widget.ImageButtonCompat.java
it.scoppelletti.mobilepower.widget.IntegerSpinner.java
it.scoppelletti.mobilepower.widget.IntegerTextWatcher.java
it.scoppelletti.mobilepower.widget.WidgetTools.java