Android Open Source - Geotrackin Toggle Component






From Project

Back to project page Geotrackin.

License

The source code is released under:

GNU General Public License

If you think the Android project Geotrackin 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

/*******************************************************************************
 * This file is part of GPSLogger for Android.
 *//  w  ww .ja va 2  s . c o m
 * GPSLogger for Android is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 2 of the License, or
 * (at your option) any later version.
 *
 * GPSLogger for Android 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with GPSLogger for Android.  If not, see <http://www.gnu.org/licenses/>.
 ******************************************************************************/

package com.geotrackin.gpslogger.views.component;

import android.view.View;

/**
 * Toggles two views. Handles the hiding and showing of two views.
 * Notifies interested handlers of the current state.
 */
public class ToggleComponent {
    private View on;
    private View off;
    private ToggleHandler handler;
    private boolean enabled;

    ToggleComponent() {
    }

    public void SetEnabled(boolean enabled) {

        if (enabled) {
            on.setVisibility(View.VISIBLE);
            off.setVisibility(View.GONE);
        } else {
            on.setVisibility(View.GONE);
            off.setVisibility(View.VISIBLE);
        }
    }

    public static ToggleBuilder getBuilder() {
        return new ToggleBuilder(new ToggleComponent());
    }

    public static class ToggleBuilder {
        private final ToggleComponent toggleComponent;
        private boolean built;

        public ToggleBuilder(ToggleComponent toggleComponent) {
            this.toggleComponent = toggleComponent;
        }

        public ToggleBuilder addOnView(View view) {
            ensureNotBuilt();
            if (this.toggleComponent.on != null || view == null) {
                throw new IllegalStateException("On View already set or invalid view");
            }
            this.toggleComponent.on = view;
            return this;
        }

        public ToggleBuilder addOffView(View view) {
            ensureNotBuilt();
            if (this.toggleComponent.off != null || view == null) {
                throw new IllegalStateException("Off View already set or invalid view");
            }
            this.toggleComponent.off = view;
            return this;
        }

        public ToggleBuilder addHandler(ToggleHandler handler) {
            ensureNotBuilt();
            if (this.toggleComponent.handler != null) throw new IllegalStateException("Handler already set");
            this.toggleComponent.handler = handler;
            return this;
        }

        public ToggleBuilder setDefaultState(boolean defaultState) {
            ensureNotBuilt();
            this.toggleComponent.enabled = defaultState;
            return this;
        }

        private void ensureNotBuilt() {
            if (this.built) {
                throw new IllegalStateException("Cannot set properties on built object.");
            }
        }

        public ToggleComponent build() {
            this.toggleComponent.initialiseView(this.toggleComponent.on, this.toggleComponent.off);
            this.built = true;
            return this.toggleComponent;
        }
    }

    public interface ToggleHandler {
        void onStatusChange(boolean status);
    }

    private void initialiseView(View viewOn, View viewOff) {

        SetEnabled(this.enabled);

        viewOn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                enabled = true;
                on.setVisibility(View.GONE);
                off.setVisibility(View.VISIBLE);
                handler.onStatusChange(enabled);
            }
        });

        viewOff.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                enabled = false;
                off.setVisibility(View.GONE);
                on.setVisibility(View.VISIBLE);
                handler.onStatusChange(enabled);
            }
        });
    }
}




Java Source Code List

com.geotrackin.gpslogger.Faqtivity.java
com.geotrackin.gpslogger.GeneralLocationListener.java
com.geotrackin.gpslogger.GpsLoggingService.java
com.geotrackin.gpslogger.GpsMainActivity.java
com.geotrackin.gpslogger.IGpsLoggerServiceClient.java
com.geotrackin.gpslogger.NavigationDrawerFragment.java
com.geotrackin.gpslogger.StartupReceiver.java
com.geotrackin.gpslogger.common.AppSettings.java
com.geotrackin.gpslogger.common.GpsRollingFileAppender.java
com.geotrackin.gpslogger.common.IActionListener.java
com.geotrackin.gpslogger.common.IMessageBoxCallback.java
com.geotrackin.gpslogger.common.OpenGTSClient.java
com.geotrackin.gpslogger.common.RejectionHandler.java
com.geotrackin.gpslogger.common.Session.java
com.geotrackin.gpslogger.common.Utilities.java
com.geotrackin.gpslogger.common.FileDialog.FileDialog.java
com.geotrackin.gpslogger.common.FileDialog.SelectionMode.java
com.geotrackin.gpslogger.loggers.FileLoggerFactory.java
com.geotrackin.gpslogger.loggers.Gpx10FileLogger.java
com.geotrackin.gpslogger.loggers.IFileLogger.java
com.geotrackin.gpslogger.loggers.Kml22FileLogger.java
com.geotrackin.gpslogger.loggers.OpenGTSLogger.java
com.geotrackin.gpslogger.loggers.PlainTextFileLogger.java
com.geotrackin.gpslogger.loggers.customurl.CustomUrlLoggerActivity.java
com.geotrackin.gpslogger.loggers.customurl.HttpUrlLogger.java
com.geotrackin.gpslogger.loggers.nmea.NmeaFileLogger.java
com.geotrackin.gpslogger.senders.AlarmReceiver.java
com.geotrackin.gpslogger.senders.FileSenderFactory.java
com.geotrackin.gpslogger.senders.IFileSender.java
com.geotrackin.gpslogger.senders.ZipHelper.java
com.geotrackin.gpslogger.senders.dropbox.DropBoxAuthorizationActivity.java
com.geotrackin.gpslogger.senders.dropbox.DropBoxHelper.java
com.geotrackin.gpslogger.senders.email.AutoEmailActivity.java
com.geotrackin.gpslogger.senders.email.AutoEmailHelper.java
com.geotrackin.gpslogger.senders.email.Mail.java
com.geotrackin.gpslogger.senders.ftp.AutoFtpActivity.java
com.geotrackin.gpslogger.senders.ftp.FtpHelper.java
com.geotrackin.gpslogger.senders.ftp.Ftp.java
com.geotrackin.gpslogger.senders.gdocs.GDocsHelper.java
com.geotrackin.gpslogger.senders.gdocs.GDocsSettingsActivity.java
com.geotrackin.gpslogger.senders.opengts.GpxReader.java
com.geotrackin.gpslogger.senders.opengts.OpenGTSActivity.java
com.geotrackin.gpslogger.senders.opengts.OpenGTSHelper.java
com.geotrackin.gpslogger.senders.osm.OSMAuthorizationActivity.java
com.geotrackin.gpslogger.senders.osm.OSMHelper.java
com.geotrackin.gpslogger.settings.GeneralSettingsActivity.java
com.geotrackin.gpslogger.settings.LoggingSettingsActivity.java
com.geotrackin.gpslogger.settings.UploadSettingsActivity.java
com.geotrackin.gpslogger.shortcuts.ShortcutCreate.java
com.geotrackin.gpslogger.shortcuts.ShortcutStart.java
com.geotrackin.gpslogger.shortcuts.ShortcutStop.java
com.geotrackin.gpslogger.views.GenericViewFragment.java
com.geotrackin.gpslogger.views.GpsBigViewFragment.java
com.geotrackin.gpslogger.views.GpsDetailedViewFragment.java
com.geotrackin.gpslogger.views.GpsSimpleViewFragment.java
com.geotrackin.gpslogger.views.component.ToggleComponent.java