Package gettingstarted

Source Code of gettingstarted.E05_Timelapse$Callback

package gettingstarted;

import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.LinkedList;

import javax.swing.BorderFactory;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

import edsdk.api.CanonCamera;
import edsdk.api.commands.ShootCommand;
import edsdk.utils.CanonConstants.DescriptiveEnum;
import edsdk.utils.CanonConstants.EdsAv;
import edsdk.utils.CanonConstants.EdsISOSpeed;
import edsdk.utils.CanonConstants.EdsSaveTo;
import edsdk.utils.CanonConstants.EdsTv;

/**
* An example of taking multiple sequential shots.
*
* Copyright © 2014 Hansi Raber <super@superduper.org>, Ananta Palani
* <anantapalani@gmail.com>
* This work is free. You can redistribute it and/or modify it under the
* terms of the Do What The Fuck You Want To Public License, Version 2,
* as published by Sam Hocevar. See the COPYING file for more details.
*
* @author hansi
* @author Ananta Palani
*
*/
public class E05_Timelapse {

    public static void main( final String[] args ) throws InterruptedException {
        //Native.setProtected( true );
        final CanonCamera camera = new CanonCamera();
        if ( camera.openSession() ) {

            E05_Timelapse.createUI( camera );

            while ( true ) {
                System.out.println( "=========================================" );
                final long level = camera.getBatteryLevel();
                if ( level != 0xffffffff ) {
                    System.out.println( "Battery Level = " + level );
                }

                camera.execute( new ShootCommand( EdsSaveTo.kEdsSaveTo_Host, 20, E05_Timelapse.filename() ) );

                try {
                    Thread.sleep( 15000 );
                }
                catch ( final InterruptedException e ) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }

        }

        CanonCamera.close();
    }

    public static File filename() {
        return new File( "images\\" +
                         new SimpleDateFormat( "yyyy\\MM\\dd\\HH-mm-ss" ).format( new Date() ) +
                         ".jpg" );
    }

    private static void createUI( final CanonCamera camera ) {
        final JFrame frame = new JFrame();
        final JPanel content = new JPanel( new GridBagLayout() );
        content.setBorder( BorderFactory.createEmptyBorder( 10, 10, 10, 10 ) );
        final GridBagConstraints gbc = new GridBagConstraints();

        gbc.anchor = GridBagConstraints.EAST;
        gbc.fill = GridBagConstraints.HORIZONTAL;
        gbc.insets = new Insets( 3, 3, 3, 3 );
        gbc.gridy = 1;

        final EdsTv currentShutterSpeed = camera.getShutterSpeed();
        final EdsAv currentApertureValue = camera.getApertureValue();
        final EdsISOSpeed currentISOSpeed = camera.getISOSpeed();

        final EdsTv[] availableShutterSpeeds = camera.getAvailableShutterSpeeds();
        final EdsAv[] availableApertureValues = camera.getAvailableApertureValues();
        final EdsISOSpeed[] availableISOSpeeds = camera.getAvailableISOSpeeds();

        E05_Timelapse.addCombobox( content, gbc, "Shutter Speed", availableShutterSpeeds, currentShutterSpeed, new Callback() {

            @Override
            public void call( final String name ) {
                camera.setShutterSpeed( EdsTv.enumOfDescription( name ) );
            }
        } );
        E05_Timelapse.addCombobox( content, gbc, "Aperture", availableApertureValues, currentApertureValue, new Callback() {

            @Override
            public void call( final String name ) {
                camera.setApertureValue( EdsAv.enumOfDescription( name ) );
            }
        } );
        E05_Timelapse.addCombobox( content, gbc, "ISO", availableISOSpeeds, currentISOSpeed, new Callback() {

            @Override
            public void call( final String name ) {
                camera.setISOSpeed( EdsISOSpeed.enumOfDescription( name ) );
            }
        } );

        frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
        frame.setContentPane( content );
        frame.setSize( 500, 400 );
        frame.setVisible( true );
    }

    private static void addCombobox( final JPanel content,
                                     final GridBagConstraints gbc,
                                     final String label,
                                     final DescriptiveEnum<?>[] enums,
                                     final DescriptiveEnum<?> selected,
                                     final Callback callback ) {
        gbc.gridx = 0;
        gbc.weightx = 0;
        content.add( new JLabel( label ), gbc );

        gbc.gridx = 1;
        gbc.weightx = 1;
        // find the items ...
        if ( enums == null ) {
            content.add( new JLabel( "not available with current mode / lens" ), gbc );
        } else {
            final LinkedList<String> items = new LinkedList<String>();
            for ( final DescriptiveEnum<?> e : enums ) {
                items.add( e.description() );
            }

            // In Java 6 JCombBox is not generic, so to compile in Java > 6 have to do this
            @SuppressWarnings( { "rawtypes", "unchecked" } )
            final JComboBox combo = new JComboBox( items.toArray( new String[] {} ) );
            combo.setSelectedItem( selected.description() );
            combo.addActionListener( new ActionListener() {

                @Override
                public void actionPerformed( final ActionEvent event ) {
                    callback.call( combo.getSelectedItem().toString() );
                }
            } );
            content.add( combo, gbc );
        }

        gbc.gridy++;
    }

    interface Callback {

        public void call( String name );
    }
}
TOP

Related Classes of gettingstarted.E05_Timelapse$Callback

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.