package zdzn.chenwh.TestFrame;import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JSpinner;
import javax.swing.JComboBox;
import javax.swing.JTable;
import javax.swing.ListSelectionModel;import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.event.ComponentEvent;
import java.awt.event.ComponentAdapter;
import java.util.Calendar;
import java.util.Date;
import java.util.Enumeration;
import java.util.Vector;import javax.swing.event.TableColumnModelListener;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.TableCellRenderer;
import javax.swing.table.TableColumn;
import javax.swing.table.TableColumnModel;public class CalenderPanle extends JPanel {

private Calendar m_cld;
private JSpinner m_objYear;
private JComboBox  m_objMonth;
private JTable m_DateTable;
    
    public CalenderPanle(){
     addComp();
    
     this.addComponentListener(new ComponentAdapter(){
public void componentResized(ComponentEvent arg0) {
}
     });
    
    }
    
    public void addComp(){
 
     this.setLayout(new BorderLayout());
    
     m_objYear=new JSpinner();
     m_objMonth = new JComboBox();
    
     JPanel jym=new JPanel();
     jym.setLayout(new GridLayout(1,2));
     jym.setAlignmentX(0.0f);
    
    
     for(int i=0;i<12;i++){
     m_objMonth.addItem((i+1) + "月");
     }
     m_objMonth.setMaximumSize(new Dimension(100,20));
     jym.add(m_objMonth);
    
     m_objYear.setMaximumSize(new Dimension(100,20));
     jym.add(m_objYear);
     this.add(jym,BorderLayout.NORTH);
    
     DateTbModel tm=new DateTbModel();
     m_DateTable = new JTable(tm);    
     m_DateTable.setDefaultRenderer(DataOfShow.class, new MyNameRender() );
    
     m_cld=Calendar.getInstance();
 
     tm.SetAllDate(m_cld);     this.add(m_DateTable,BorderLayout.CENTER);
    }
  
}
class DateTbModel extends AbstractTableModel
{
private int columncount=7;
private Vector v=new Vector();
private Vector<String> vtitle=new Vector<String>();

public DateTbModel()
{
vtitle.add("日");
vtitle.add("月");
vtitle.add("火");
vtitle.add("水");
vtitle.add("木");
vtitle.add("金");
vtitle.add("土");
}

   
public int getColumnCount() 
{
// TODO Auto-generated method stub
return columncount;
} public int getRowCount() 
{
// TODO Auto-generated method stub
return v.size();
} public Object getValueAt(int r, int c) 
{
// TODO Auto-generated method stub
Object ret;
ret=((Vector)v.get(r)).get(c);
return ret;
}

public String getColumnName(int cloNum){

String name="";
    name=(String)vtitle.get(cloNum);
    return name;
}

public Class getColumnClass(int columnIndex) {

return DataOfShow.class; 
}

public void SetAllDate(Calendar c)
{
boolean isAdd=true;
int m=c.getTime().getMonth();
DataOfShow ds;
    v.clear();
    
 //SimpleDateFormat sdf=new SimpleDateFormat("yyyy/MM/dd");
    
    c.add(Calendar.DAY_OF_MONTH, -c.getTime().getDate()+1);
    c.add(Calendar.DAY_OF_MONTH, -c.getTime().getDay());
    Vector row;
    while(isAdd)
    {
     row=new Vector();
     for(int i=0;i<7;i++)
     {
     ds=new DataOfShow();
     ds.setDate(c.getTime());
     if(m!=c.getTime().getMonth()){
       ds.setBgColor(new Color(0.5f,0.5f,0.5f));
     }else{
       ds.setBgColor(new Color(0.8f,0.8f,0.8f));
     }
     row.add(ds);
     c.add(Calendar.DAY_OF_MONTH, 1);
     }
     v.add(row);
     if(c.getTime().getMonth()!=m){
     isAdd=false;
     }
    }
    this.fireTableDataChanged();
}
}class DataOfShow{
   private Date date;
   private JButton bt1;
   private int  workflg;
   private Color bgColor;
   
public DataOfShow(){
//bgColor=new Color(0.0f,0.5f,0.5f);
workflg=0;
} public void setDate(Date date) {
this.date = date;
}

public Date getDate() {
return this.date;
} public void setWorkflg(int workflg) {
this.workflg = workflg;
}

public void setBgColor(Color c) {
this.bgColor = c;
}


   
   public JButton getCompt(){
 if(date!=null){   
   bt1=new JButton(date.getDate()+"");
   bt1.setBackground(bgColor);
 }else{
   bt1=new JButton("");
   bt1.setBackground(bgColor);
 }
   return bt1;
   }
   
   
 

}
class MyNameRender implements TableCellRenderer{ /**
 * 
 */
private static final long serialVersionUID = 1L;
/**
 * 
 */

public MyNameRender(){

}


public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column)
{
// TODO Auto-generated method stub
DataOfShow installData;
if(value==null){
installData=new DataOfShow();
}else{
    installData= (DataOfShow) value;
}
return installData.getCompt();
}
}