001package org.vishia.gral.awt;
002
003import java.awt.Component;
004import java.awt.Container;
005import java.awt.Dimension;
006import java.awt.Point;
007import java.awt.Rectangle;
008import java.awt.event.ComponentEvent;
009import java.awt.event.ComponentListener;
010
011import org.eclipse.swt.widgets.Control;
012import org.vishia.gral.base.GralPanelContent;
013import org.vishia.gral.base.GralMng;
014import org.vishia.gral.ifc.GralColor;
015import org.vishia.gral.ifc.GralRectangle;
016
017public class AwtPanel  extends GralPanelContent
018{
019  
020  /**Version history:
021   * <ul>
022   * <li>2011-11-19 Hartmut chg: {@link #itsTabSwt} with correct type moved from {@link GralPanelContent}.
023   * <li>2011-09-25 Hartmut creation: Common class for all Swt implementations of Panels.
024   *   This class can implement the abstract methods from {@link GralPanelContent} for the implementation
025   *   in a common form.
026   * </ul>
027   * 
028   */
029  @SuppressWarnings("hiding")
030  public final static int version = 0x20111119;
031
032  
033  /**The associated tab in a TabFolder if this panel is the main panel of the TabItem, or null 
034   * if it isn't a main panel of a tab in a tabbed panel.
035   * <br><br>    
036   * Note: can't be final because it may be unknown on calling constructor. The property whether 
037   * a panel is a tab-panel can't be presented with an extra subclass, because this class is the subclass 
038   * of several Swt panel types. Use the aggregation principle instead multi-inheritance.   
039   */
040  public Container itsTabAwt; 
041  
042  /**It is either a Composite or a SwtCanvas
043   * 
044   */
045  public Container panelComposite;
046
047  //protected Composite panelSwt;
048  
049  private AwtPanel(String name, GralMng mng)
050  {
051    super(name, mng, null);
052  }
053
054  /**Constructs a panel
055   * @param name of panel.
056   * @param mng The widget manager
057   * @param panelSwt may be null, then the {@link GralPanelContent#panelComposite} should be set 
058   *   after construction of a derived class.
059   */
060  public AwtPanel(String name, GralMng mng, Container panelAwt)
061  {
062    super(name, mng, panelAwt);
063    if(panelAwt !=null){
064      panelAwt.addComponentListener(resizeItemListener);
065    }
066  }
067
068  /*@Override public Container getPanelImpl()
069  {
070    return (Container)panelComposite;
071  }*/
072  
073
074  @Override
075  public GralColor setBackgroundColor(GralColor color)
076  {
077    // TODO Auto-generated method stub
078    return null;
079  }
080
081  @Override
082  public GralColor setForegroundColor(GralColor color)
083  {
084    // TODO Auto-generated method stub
085    return null;
086  }
087  
088
089  
090  /*@Override public GralRectangle getPixelPositionSize(){
091    Rectangle r = ((Component)panelComposite).getBounds();
092    GralRectangle posSize = new GralRectangle(r.x, r.y, r.width, r.height);
093    return posSize;
094  }*/
095
096
097  /*@Override public GralRectangle getPixelSize(){
098    Dimension r = ((Component)panelComposite).getSize();
099    GralRectangle posSize = new GralRectangle(0, 0, r.width, r.height);
100    return posSize;
101  }*/
102
103
104  @Override public void setBoundsPixel(int x, int y, int dx, int dy)
105  { panelComposite.setBounds(x,y,dx,dy);
106  }
107  
108  
109  //@Override 
110  public void XXXrepaintGthread(){
111    if(panelComposite !=null){
112      ((Container)panelComposite).repaint();
113    }
114  }
115
116
117
118
119
120  @Override public boolean remove(){
121    super.remove();
122    if(itsTabAwt !=null){
123      //itsTabAwt.dispose();
124      itsTabAwt = null;
125    }
126    return true;
127  }
128  
129  
130  protected ComponentListener resizeItemListener = new ComponentListener()
131  {
132
133    @Override
134    public void componentHidden(ComponentEvent e)
135    {
136      // TODO Auto-generated method stub
137      
138    }
139
140    @Override
141    public void componentMoved(ComponentEvent e)
142    {
143      // TODO Auto-generated method stub
144      
145    }
146
147    @Override
148    public void componentResized(ComponentEvent e)
149    {
150    }
151
152    @Override
153    public void componentShown(ComponentEvent e)
154    {
155      // TODO Auto-generated method stub
156      
157    } 
158    
159    
160    /*
161    @Override public void controlMoved(ControlEvent e) 
162    { //do nothing if moved.
163    }
164
165    @Override public void controlResized(ControlEvent e) 
166    { 
167      Widget wparent = e.widget; //it is the SwtCanvas because this method is assigned only there.
168      //Control parent = wparent;
169      for(GralWidget widgd: widgetsToResize){
170        widgd.getMng().resizeWidget(widgd, 0, 0);
171      }
172      //validateFrameAreas();  //calculates the size of the areas newly and redraw.
173    }
174    */
175    
176  };
177
178
179  
180  
181  
182}