All Downloads are FREE. Search and download functionalities are using the official Maven repository.

it.tidalwave.bluebill.mobile.taxonomy.ui.DefaultTaxonomyPickerViewController Maven / Gradle / Ivy

/***********************************************************************************************************************
 *
 * blueBill Mobile - Android - open source birding
 * Copyright (C) 2009-2011 by Tidalwave s.a.s. (http://www.tidalwave.it)
 *
 ***********************************************************************************************************************
 *
 * 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.
 *
 ***********************************************************************************************************************
 *
 * WWW: http://bluebill.tidalwave.it/mobile
 * SCM: https://java.net/hg/bluebill-mobile~android-src
 *
 **********************************************************************************************************************/
package it.tidalwave.bluebill.mobile.taxonomy.ui;

import javax.annotation.Nonnull;
import java.util.ArrayList;
import java.util.List;
import it.tidalwave.util.ui.UserNotificationWithFeedback.Feedback;
import it.tidalwave.netbeans.util.Locator;
import it.tidalwave.observation.Observation;
import it.tidalwave.observation.ObservationManager;
import it.tidalwave.observation.ObservationSet;
import it.tidalwave.observation.bluebill.ObservationClipboard;
import it.tidalwave.bluebill.mobile.taxonomy.TaxonomyDescription;
import static it.tidalwave.util.ui.UserNotificationWithFeedback.notificationWithFeedback;

/***********************************************************************************************************************
 *
 * @stereotype Controller
 * 
 * @author  Fabrizio Giudici
 * @version $Id$
 *
 **********************************************************************************************************************/
public class DefaultTaxonomyPickerViewController implements TaxonomyPickerViewController
  {
    private static final Class _ = DefaultTaxonomyPickerViewController.class;
    
    @Nonnull
    protected final TaxonomyPickerView view;

    @Nonnull
    private final ObservationManager observationManager = Locator.find(ObservationManager.class);

    @Nonnull
    private final ObservationClipboard observationClipboard = Locator.find(ObservationClipboard.class);

    protected final List taxonomies = new ArrayList();

    /*******************************************************************************************************************
     *
     *
     ******************************************************************************************************************/
    public DefaultTaxonomyPickerViewController (final @Nonnull TaxonomyPickerView view)
      {
        this.view = view;
        // FIXME
        taxonomies.add(new TaxonomyDescription("AOU7th", 
                                               "The American Ornithologists' Union 7th Edition",
                                               "North America"));
        taxonomies.add(new TaxonomyDescription("EBNItalia2003", 
                                               "EBN Italia 2003",
                                               "Western Palearctic Ecozone (Europe, Western Asia, North Africa)"));
        taxonomies.add(new TaxonomyDescription("RobertsVII", 
                                               "Roberts VII Edition",
                                               "Southern Africa"));
      }

    /*******************************************************************************************************************
     *
     * {@inheritDoc}
     *
     ******************************************************************************************************************/
    public void checkWhetherTheTaxonomyCanBeChanged()
      {
        final ObservationSet observationSet = observationManager.findOrCreateObservationSetById(null);
        final boolean observationsInserted = observationSet.find(Observation.class).count() > 0;
        final boolean insertInProgress = observationClipboard.getBuilder().getItemCount() > 0;

        if (observationsInserted || insertInProgress)
          {
            view.notifyThatTheTaxonomyCannotBeChanged(notificationWithFeedback().withCaption(_, "cantChangeChecklist_title")
                                                                                .withText(_, "cantChangeChecklist_message")
                                                                                .withFeedback(new Feedback()
              {
                @Override
                public void onConfirm()
                  {
                    view.dismiss();
                  }
              }));
          }
      }
  }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy