    001package org.vishia.gral.swt;
    002
    003import org.eclipse.swt.browser.Browser;
    004import org.eclipse.swt.widgets.Composite;
    005import org.eclipse.swt.widgets.Control;
    006import org.eclipse.swt.widgets.Text;
    007import org.vishia.byteData.VariableContainer_ifc;
    008import org.vishia.gral.base.GralHtmlBox;
    009import org.vishia.gral.base.GralMng;
    010import org.vishia.gral.base.GralPanelContent;
    011import org.vishia.gral.ifc.GralColor;
    012import org.vishia.gral.ifc.GralRectangle;
    013
    014public class SwtHtmlBox extends GralHtmlBox.ImplAccess
    015{
    016
    017
    018  /**Version, history and license.
    019   * <ul>
    020   * <li>2012-07-13 Hartmut chg: It is registered in the mng yet, therefore resize works.
    021   * </ul>
    022   *
    023   * <b>Copyright/Copyleft</b>:<br>
    024   * For this source the LGPL Lesser General Public License,
    025   * published by the Free Software Foundation is valid.
    026   * It means:
    027   * <ol>
    028   * <li> You can use this source without any restriction for any desired purpose.
    029   * <li> You can redistribute copies of this source to everybody.
    030   * <li> Every user of this source, also the user of redistribute copies
    031   *    with or without payment, must accept this license for further using.
    032   * <li> But the LPGL is not appropriate for a whole software product,
    033   *    if this source is only a part of them. It means, the user
    034   *    must publish this part of source,
    035   *    but doesn't need to publish the whole source of the own product.
    036   * <li> You can study and modify (improve) this source
    037   *    for own using or for redistribution, but you have to license the
    038   *    modified sources likewise under this LGPL Lesser General Public License.
    039   *    You mustn't delete this Copyright/Copyleft inscription in this source file.
    040   * </ol>
    041   * If you intent to use this source without publishing its usage, you can get
    042   * a second license subscribing a special contract with the author.
    043   *
    044   * @author Hartmut Schorrig = hartmut.schorrig@vishia.de
    045   */
    046  public static final int version = 20120713;
    047
    048  Browser boxSwt;
    049
    050  String lastUrl="no-help", lastUrlOk ="no-help";
    051
    052  public boolean bActiv;
    053
    054  public SwtHtmlBox(GralHtmlBox box, SwtMng mngSwt)
    055  { super(box);
    056    //SwtMng mngSwt = (SwtMng)(GralMng.get()).impl;
    057    GralPanelContent panel = widgg.pos().panel;
    058    Composite parent;
    059    if(panel == null){
    060      parent = mngSwt.displaySwt.getActiveShell();
    061    } else {
    062      parent = (Composite)(panel.getWidgetImplementation());
    063      //parent = ((SwtPanel)panel.getWidgetImplementation()).panelComposite; //(Composite)(panel.getPanelImpl());
    064    }
    065    try {
    066      boxSwt = new Browser(parent,0);
    067      //mng.registerWidget(this);
    068      mngSwt.setPosAndSizeSwt(box.pos(), boxSwt, 0, 0);
    069    } catch(Throwable exc){
    070      System.err.println("can't create SWT-Browser");
    071      exc.printStackTrace(System.err);
    072    }
    073    bActiv = false;
    074  }
    075
    076
    077  static SwtHtmlBox createHtmlBox(GralHtmlBox widgg, SwtMng mng){
    078    return new SwtHtmlBox(widgg, mng);
    079    //
    080  }
    081
    082
    083
    084
    085  @Override public void setUrl(String url){
    086    //this.w
    087    lastUrl = url;
    088    if(bActiv){
    089      boolean bOk = boxSwt.setUrl(url);
    090      if(bOk){
    091        lastUrlOk = url;
    092      } else {
    093        boxSwt.setUrl(lastUrlOk);
    094      }
    095    }
    096  }
    097
    098
    099
    100  @Override public void activate(){
    101    if(boxSwt !=null){
    102      bActiv = true;
    103      setUrl(lastUrl);
    104    }
    105  }
    106
    107
    108
    109
    110  @Override
    111  public void removeWidgetImplementation()
    112  {
    113    // TODO Auto-generated method stub
    114
    115  }
    116
    117  @Override
    118  public boolean setFocusGThread()
    119  {
    120    // TODO Auto-generated method stub
    121    return false;
    122  }
    123
    124  @Override public void setVisibleGThread(boolean bVisible) { super.setVisibleState(bVisible); boxSwt.setVisible(bVisible); }
    125
    126
    127  @Override public void repaintGthread(){
    128    if(boxSwt !=null){ boxSwt.redraw(); }
    129  }
    130
    131
    132
    133  @Override public Object getWidgetImplementation(){ return boxSwt; }
    134
    135
    136
    137
    138
    139  @Override
    140  public void setBoundsPixel(int x, int y, int dx, int dy)
    141  {
    142    // TODO Auto-generated method stub
    143
    144  }
    145
    146  @Override public GralRectangle getPixelPositionSize()
    147  {
    148    // TODO Auto-generated method stub
    149    return null;
    150  }
    151
    152
    153
    154
    155
    156}