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

it.tidalwave.metadata.viewer.impl.BasicMetadataPanelProvider Maven / Gradle / Ivy

/*******************************************************************************
 *
 * blueMarine - open source photo workflow
 * =======================================
 *
 * Copyright (C) 2003-2009 by Fabrizio Giudici
 * Project home page: http://bluemarine.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. 
 *
 *******************************************************************************
 *
 * $Id: BasicMetadataPanelProvider.java,v b89b0b568aeb 2010/02/17 15:26:52 fabrizio $
 *
 ******************************************************************************/
package it.tidalwave.metadata.viewer.impl;

import javax.annotation.CheckForNull;
import javax.annotation.Nonnull;
import javax.swing.JComponent;
import org.openide.loaders.DataObject;
import it.tidalwave.util.logging.Logger;
import it.tidalwave.metadata.Metadata;
import it.tidalwave.metadata.MetadataItemHolder;
import it.tidalwave.metadata.NoSuchMetadataTypeException;
import it.tidalwave.metadata.basic.Basic;
import it.tidalwave.metadata.viewer.MetadataPanelProvider;

/*******************************************************************************
 *
 * @author  Fabrizio Giudici
 * @version $Id: BasicMetadataPanelProvider.java,v b89b0b568aeb 2010/02/17 15:26:52 fabrizio $
 *
 ******************************************************************************/
public class BasicMetadataPanelProvider implements MetadataPanelProvider
  {
    private final static String CLASS = BasicMetadataPanelProvider.class.getName();
    private final static Logger logger = Logger.getLogger(CLASS);

    private final static Basic EMPTY = new Basic();
    
    @CheckForNull
    private BasicMetadataPane basicMetadataPane;

    @CheckForNull
    private DataObject dataObject;
    
//    private BindingGroup bindingGroup = new BindingGroup();

    /***************************************************************************
     *
     *
     **************************************************************************/
    @Nonnull
    public String getDisplayName()
      {
        return "Basic";
      }

    /***************************************************************************
     *
     *
     **************************************************************************/
    public boolean isDataObjectSupported (@Nonnull final DataObject dataObject)
      {
        return true;
      }

    /***************************************************************************
     *
     *
     **************************************************************************/
    @Nonnull
    public synchronized JComponent createPanel()
      {
        if (basicMetadataPane == null)
          {
            basicMetadataPane = new BasicMetadataPane();
          }

        return basicMetadataPane;
      }

    /***************************************************************************
     *
     *
     **************************************************************************/
    public void setDataObject (@CheckForNull final DataObject dataObject)
      {
        logger.info("setDataObject(%s)", dataObject);

        this.dataObject = dataObject;
        Basic basic = EMPTY;
        
        if (basicMetadataPane != null)
          {
            if (dataObject != null)
              {
                final Metadata metadata = dataObject.getLookup().lookup(Metadata.class);

                if (metadata != null)
                  {
                    try
                      {
                        final MetadataItemHolder holder = metadata.findOrCreateItem(Basic.class, Metadata.StorageType.INTERNAL);

                        if (holder.isAvailable())
                          {
                            basic = holder.get();
                          }
                      }
                    catch (NoSuchMetadataTypeException e)
                      {
                        logger.throwing(CLASS, "setDataObject()", e);
                      }
//                    basicMetadata.setMetadataDate(metadata.getLatestModificationTime());
//                    bindingGroup.unbind();
//                    bindingGroup = new BindingGroup();
//                    bindingGroup.addBinding(Bindings.createAutoBinding(UpdateStrategy.READ_WRITE,
//                                                                       metadata,
//                                                                       BeanProperty.create("latestModificationTime"),
//                                                                       basicMetadata,
//                                                                       BeanProperty.create("metadataDate")));
//                    basicMetadata.setMetadataDate(metadata.getLatestModificationTime());
                  }

//                bindingGroup.bind();
              }
            
            basicMetadataPane.bind(basic);
          }
      }

    /***************************************************************************
     *
     *
     **************************************************************************/
    @CheckForNull
    public DataObject getDataObject()
      {
        return dataObject;
      }
  }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy