package etc.v1.events.colorcode;
import com.google.gwt.user.client.DOM;
import com.google.gwt.user.client.Element;
import com.google.gwt.user.client.ui.*;
import com.gwtext.client.widgets.ColorPalette;
import com.gwtext.client.widgets.Window;
import com.gwtext.client.widgets.event.ColorPaletteListenerAdapter;

import etc.v1.client.common.GenProps;


/**
 * A regular GWT component without integration with IT Mill Toolkit.
 **/
public class GwtColorPicker extends Composite  {

    /** Currently selected color name to give client-side feedback to the user. */
    protected Label currentcolor = new Label();
    Window colorPickerWindow = new Window();
    ColorPalette colorPalette = new ColorPalette();  
    Grid grid =null;
    Button dutybutton =null;
    Button correspondancebutton=null; 
    Button meetingbutton =null;
    Button interviewbutton =null;
    Button todobutton =null;
    Button activitybutton =null;
    Button dayeventbutton =null;
    HorizontalPanel panel=null;
    String selectedButtonText=null;
   
    

    public GwtColorPicker() {
        grid = new Grid(1,6);
        grid.setCellSpacing(10);
        
        
        dutybutton =new Button("Duty");
        dutybutton.setHTML("<div style=\"color: #fff;font-size: 9pt;\">"+dutybutton.getText()+"</div>");
        dutybutton.addClickListener(new ClickListener()
        {

			public void onClick(Widget sender) {
				openColorWindow(sender);
				
			}
        	
        });
        correspondancebutton=new Button("Correspondance"); 
        correspondancebutton.setHTML("<div style=\"color: #fff;font-size: 9pt;\">"+correspondancebutton.getText()+"</div>");
        correspondancebutton.addClickListener(new ClickListener()
        {

			public void onClick(Widget sender) {
				openColorWindow(sender);
				
			}
        	
        });
        meetingbutton =new Button("Meeting");
        meetingbutton.setHTML("<div style=\"color: #fff;font-size: 9pt;\">"+meetingbutton.getText()+"</div>");
        meetingbutton.addClickListener(new ClickListener()
        {

			public void onClick(Widget sender) {
				openColorWindow(sender);
				
			}
        	
        });
        interviewbutton =new Button("Interview");
        interviewbutton.setHTML("<div style=\"color: #fff;font-size: 9pt;\">"+interviewbutton.getText()+"</div>");
        interviewbutton.addClickListener(new ClickListener()
        {

			public void onClick(Widget sender) {
				openColorWindow(sender);
				
			}
        	
        });
        todobutton =new Button("ToDo");
        todobutton.setHTML("<div style=\"color: #fff;font-size: 9pt;\">"+todobutton.getText()+"</div>");
        todobutton.addClickListener(new ClickListener()
        {

			public void onClick(Widget sender) {
				openColorWindow(sender);
				
			}
        	
        });
        activitybutton =new Button("Activity");
        activitybutton.setHTML("<div style=\"color: #fff;font-size: 9pt;\">"+activitybutton.getText()+"</div>");
        activitybutton.addClickListener(new ClickListener()
        {

			public void onClick(Widget sender) {
				openColorWindow(sender);
				
			}
        	
        });
        dayeventbutton =new Button("WholeDay");
        dayeventbutton.setHTML("<div style=\"color: #fff;font-size: 9pt;\">"+dayeventbutton.getText()+"</div>");
        dayeventbutton.addClickListener(new ClickListener()
        {

			public void onClick(Widget sender) {
				openColorWindow(sender);
				
			}
        	
        });
        
        grid.setWidget(0, 0, dutybutton); 
        DOM.setStyleAttribute(dutybutton.getElement(), "background", GenProps.dutyBgColor);
        
        grid.setWidget(0, 1, correspondancebutton); 
    
        DOM.setStyleAttribute(correspondancebutton.getElement(), "background", GenProps.correspondanceBgColor);
        
        grid.setWidget(0, 2, meetingbutton);      
        DOM.setStyleAttribute(meetingbutton.getElement(), "background", GenProps.meetingBgColor);
        
        grid.setWidget(0, 3, interviewbutton);      
        DOM.setStyleAttribute(interviewbutton.getElement(), "background", GenProps.interviewBgColor);
        
        grid.setWidget(0, 4, activitybutton);      
        DOM.setStyleAttribute(activitybutton.getElement(), "background", GenProps.activityBgColor);
        
        grid.setWidget(0, 5, todobutton);      
        DOM.setStyleAttribute(todobutton.getElement(), "background", GenProps.toDoBgColor);
        
//        grid.setWidget(0, 6, dayeventbutton);      
//        DOM.setStyleAttribute(dayeventbutton.getElement(), "background", GenProps.dayEventBgColor);
        
        colorPickerWindow.setWidth(180);
        colorPickerWindow.setAutoHeight(true);
        colorPickerWindow.setBodyBorder(false);
        colorPickerWindow.setBorder(false);
        colorPalette.addListener(new ColorPaletteListenerAdapter()
        {
        	@Override
        	public void onSelect(ColorPalette colorPalette, String color) {
        		if(selectedButtonText.equals("Duty"))
        		{
        			GenProps.dutyBgColor=color;
        			 DOM.setStyleAttribute(dutybutton.getElement(), "background", GenProps.dutyBgColor);
        			 colorPickerWindow.hide();
        		}
        		else if(selectedButtonText.equals("Correspondance"))
        		{
        			GenProps.correspondanceBgColor=color;
        			 DOM.setStyleAttribute(correspondancebutton.getElement(), "background", GenProps.correspondanceBgColor);
        			 colorPickerWindow.hide();
        		}
        		else if(selectedButtonText.equals("Meeting"))
        		{
        			GenProps.meetingBgColor=color;
        			 DOM.setStyleAttribute(meetingbutton.getElement(), "background", GenProps.meetingBgColor);
        			 colorPickerWindow.hide();
        		}
        		else if(selectedButtonText.equals("Interview"))
        		{
        			GenProps.interviewBgColor=color;
        			 DOM.setStyleAttribute(interviewbutton.getElement(), "background", GenProps.interviewBgColor);
        			 colorPickerWindow.hide();
        		}
        		else if(selectedButtonText.equals("ToDo"))
        		{
        			GenProps.toDoBgColor=color;
        			 DOM.setStyleAttribute(todobutton.getElement(), "background", GenProps.toDoBgColor);
        			 colorPickerWindow.hide();
        		}
        		else if(selectedButtonText.equals("Activity"))
        		{
        			GenProps.activityBgColor=color;
        			 DOM.setStyleAttribute(activitybutton.getElement(), "background", GenProps.activityBgColor);
        			 colorPickerWindow.hide();
        		}
        		else if(selectedButtonText.equals("WholeDay"))
        		{
        			GenProps.dayEventBgColor=color;
        			 DOM.setStyleAttribute(dayeventbutton.getElement(), "background", GenProps.dayEventBgColor);
        			 colorPickerWindow.hide();
        		}
        		
        		
        	}
        });        
        panel = new HorizontalPanel();
        panel.add(grid);
        initWidget(panel);
    }

    /** Handles click on a color button. */
    public void onClick(Widget sender) {
        colorPickerWindow.add(colorPalette);
        colorPickerWindow.setPosition(sender.getAbsoluteLeft(), sender.getAbsoluteTop());
        colorPickerWindow.show();
        setColor(((Button) sender).getText());
    }

    /** Sets the currently selected color. */
    public void setColor(String newcolor) {
        // Give client-side feedback by changing the color name in the label
        currentcolor.setText(newcolor);

        // Obtain the DOM elements. This assumes that the <td> element
        // of the HorizontalPanel is the parent of the label element.
        Element nameelement = currentcolor.getElement();
        Element cell = DOM.getParent(nameelement);

        // Give feedback by changing the background color
        DOM.setStyleAttribute(cell,        "background", newcolor);
        DOM.setStyleAttribute(nameelement, "background", newcolor);
        if ("black navy maroon blue purple".indexOf(newcolor) != -1)
            DOM.setStyleAttribute(nameelement, "color", "white");
        else
            DOM.setStyleAttribute(nameelement, "color", "black");
    }
    public void openColorWindow(Widget sender)
    {
    	selectedButtonText=((Button) sender).getText();
    	colorPickerWindow.add(colorPalette);
        colorPickerWindow.setPosition(sender.getAbsoluteLeft(), sender.getAbsoluteTop()+20);
        colorPickerWindow.show();
    }
}