package com.isa.jump.plugin;

import java.io.File;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import javax.swing.JFileChooser;
import javax.swing.filechooser.FileFilter;

import com.vividsolutions.jts.geom.Envelope;
import com.vividsolutions.jump.workbench.WorkbenchContext;
import com.vividsolutions.jump.workbench.model.StandardCategoryNames;
import com.vividsolutions.jump.workbench.model.WMSLayer;
//import com.vividsolutions.jump.workbench.model.UndoableCommand;
import com.vividsolutions.jump.workbench.plugin.AbstractPlugIn;
import com.vividsolutions.jump.workbench.plugin.EnableCheckFactory;
import com.vividsolutions.jump.workbench.plugin.MultiEnableCheck;
import com.vividsolutions.jump.workbench.plugin.PlugInContext;
import com.vividsolutions.jump.workbench.ui.GUIUtil;
import com.vividsolutions.jump.workbench.ui.plugin.wms.MapLayerWizardPanel;
import com.vividsolutions.jump.workbench.ui.plugin.wms.OneSRSWizardPanel;
import com.vividsolutions.jump.workbench.ui.plugin.wms.SRSWizardPanel;
import com.vividsolutions.jump.workbench.ui.plugin.wms.URLWizardPanel;
import com.vividsolutions.jump.workbench.ui.wizard.WizardDialog;
import com.vividsolutions.jump.workbench.ui.wizard.WizardPanel;
import com.vividsolutions.jump.util.FileUtil;

public class AddGoogleLayerPlugin extends AbstractPlugIn
{
	 public void initialize(PlugInContext context) throws Exception
	 {
       context.getFeatureInstaller().addMainMenuItem(this,
       new String[] { "Layer"}, "Add Google Layer...", false, null, this.createEnableCheck(context.getWorkbenchContext()));
   
   }
	    
	    public boolean execute(final PlugInContext context) throws Exception
	    {
	        //reportNothingToUndoYet(context);
	        try
	        {
	            context.getWorkbenchFrame().getOutputFrame().createNewDocument();
	            WorkbenchContext wc = context.getWorkbenchContext();
	            
	                List imageFilenames = new ArrayList();
	                GoogleLayer layer = new GoogleLayer(context, imageFilenames);
	                layer.setAlpha(128);
	                Collection selectedCategories = context.getLayerNamePanel().getSelectedCategories();
	                context.getLayerManager().addLayerable(selectedCategories.isEmpty()
	                ? StandardCategoryNames.WORKING
	                : selectedCategories.iterator().next().toString(), layer);
	                
	                return true;
	        }
	        
	        catch (Exception e)
	        {
	            context.getWorkbenchFrame().warnUser("Error: see output window");
	            context.getWorkbenchFrame().getOutputFrame().addText("AddGoogleLayerPlugIn Exception:" + e.toString());
	            return false;
	        }
	    }
	    
	    public MultiEnableCheck createEnableCheck(final WorkbenchContext workbenchContext) {
	        EnableCheckFactory checkFactory = new EnableCheckFactory(workbenchContext);
	        return new MultiEnableCheck()
	            .add(checkFactory.createTaskWindowMustBeActiveCheck());
	    }    
	}
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
//	public void initialize(PlugInContext context) throws Exception
//    {
//        context.getFeatureInstaller().addMainMenuItem(this,
//        new String[] { "Layer"}, "Add Google Layer...", false, null, this.createEnableCheck(context.getWorkbenchContext()));
//    
//    }
//	 
//	 public boolean execute(final PlugInContext context) throws Exception
//	    {
//	        reportNothingToUndoYet(context);
//	        
//	        WizardDialog d = new WizardDialog(context.getWorkbenchFrame(),
//	                "Howdy", context.getErrorHandler());
//	       
//	           
//	        //Set size after #init, because #init calls #pack. [Jon Aquino]
//	        d.setSize(500, 400);
//	        GUIUtil.centreOnWindow(d);
//	        d.setVisible(true);
//	        if (!d.wasFinishPressed()) {
//	            return false;
//	        }
//		 
//		 // Everything commented out below needs to be uncommented out in order to select a file
//	        try
//	        {
//	            context.getWorkbenchFrame().getOutputFrame().createNewDocument();
//	            WorkbenchContext wc = context.getWorkbenchContext();
//	                List imageFilenames = new ArrayList();
//	                
//	                final 
//	                GoogleLayer layer = new GoogleLayer(context, imageFilenames);
//	                Collection selectedCategories = context.getLayerNamePanel().getSelectedCategories();
//	                context.getLayerManager().addLayerable(selectedCategories.isEmpty()
//	                ? StandardCategoryNames.WORKING
//	                : selectedCategories.iterator().next().toString(), layer);
//	                
//	                return true;
//	            }
//	            else
//	            {
//	                return false;
//	            }
//	        }	        
//	        catch (Exception e)
//	        {
//	            context.getWorkbenchFrame().warnUser("Error: see output window");
//	            context.getWorkbenchFrame().getOutputFrame().addText("AddGooglePlugIn Exception:" + e.toString());
//	            return false;
//	        }
//	    }
//	    
//	    public MultiEnableCheck createEnableCheck(final WorkbenchContext workbenchContext) {
//	        EnableCheckFactory checkFactory = new EnableCheckFactory(workbenchContext);
//	        return new MultiEnableCheck()
//	            .add(checkFactory.createTaskWindowMustBeActiveCheck());
//	    }    
//}
