Package org.dyno.visual.swing.widgets

Source Code of org.dyno.visual.swing.widgets.JAppletAdapter

/************************************************************************************
* Copyright (c) 2008 William Chen.                                                 *
*                                                                                  *
* All rights reserved. This program and the accompanying materials are made        *
* available under the terms of the Eclipse Public License v1.0 which accompanies   *
* this distribution, and is available at http://www.eclipse.org/legal/epl-v10.html *
*                                                                                  *
* Use is subject to the terms of Eclipse Public License v1.0.                      *
*                                                                                  *
* Contributors:                                                                    *
*     William Chen - initial API and implementation.                               *
************************************************************************************/

package org.dyno.visual.swing.widgets;

import java.awt.Component;
import java.awt.Container;
import java.awt.Point;
import java.awt.Rectangle;
import java.awt.event.KeyEvent;

import javax.swing.JApplet;
import javax.swing.JComponent;
import javax.swing.JMenuBar;
import javax.swing.JPanel;
import javax.swing.JRootPane;
import javax.swing.SwingUtilities;
import javax.swing.event.MouseInputListener;

import org.dyno.visual.swing.base.ExtensionRegistry;
import org.dyno.visual.swing.base.JavaUtil;
import org.dyno.visual.swing.plugin.spi.LayoutAdapter;
import org.dyno.visual.swing.plugin.spi.RootPaneContainerAdapter;
import org.dyno.visual.swing.plugin.spi.WidgetAdapter;
import org.eclipse.core.commands.operations.IUndoableOperation;

@SuppressWarnings("unchecked")
public class JAppletAdapter extends RootPaneContainerAdapter {
  private JPanelAdapter contentAdapter;
  private JComponent contentPane;
  private JRootPane jrootPane;

  public JAppletAdapter() {
    super(null);
    createContentAdapter();
  }

  @Override
  public void setWidget(Component widget) {
    super.setWidget(widget);
    createContentAdapter();
  }
  public boolean needGenBoundCode(Component child) {
    if (child instanceof JMenuBar)
      return false;
    return contentAdapter.needGenBoundCode(child);
  }

  private void createContentAdapter() {
    contentAdapter = (JPanelAdapter) ExtensionRegistry.createWidgetAdapter(JPanel.class);
    contentAdapter.setDelegate(this);
    JApplet me = (JApplet) getWidget();
    JavaUtil.layoutContainer(me);
    contentPane = (JComponent) me.getContentPane();
    jrootPane = me.getRootPane();
    contentAdapter.setWidget(contentPane);
    contentAdapter.setDelegate(this);
  }

  public void doLayout() {
    contentAdapter.doLayout();
  }

  @Override
  public void addChildByConstraints(Component child, Object constraints) {
    if (child instanceof JMenuBar) {
      JApplet japplet = (JApplet) getWidget();
      japplet.setJMenuBar((JMenuBar) child);
    } else
      contentAdapter.addChildByConstraints(child, constraints);
  }

  @Override
  public void clearSelection() {
    setSelected(false);
    JApplet japplet = (JApplet) getWidget();
    JMenuBar jmb = japplet.getJMenuBar();
    if (jmb != null) {
      WidgetAdapter jmbAdapter = WidgetAdapter.getWidgetAdapter(jmb);
      jmbAdapter.clearSelection();
    }
    contentAdapter.clearSelection();
  }

  @Override
  protected Component createWidget() {
    return new JApplet();
  }

  @Override
  public Object getChildConstraints(Component child) {
    if (child instanceof JMenuBar)
      return null;
    return contentAdapter.getChildConstraints(child);
  }

  @Override
  public boolean isRoot() {
    return true;
  }

  @Override
  public Component getRootPane() {
    return jrootPane;
  }

  @Override
  public Rectangle getDesignBounds() {
    Rectangle bounds = this.jrootPane.getBounds();
    if (bounds.width <= 0)
      bounds.width = 320;
    if (bounds.height <= 0)
      bounds.height = 240;
    bounds.y = 24;
    bounds.x = 24;
    return bounds;
  }

  @Override
  protected Component newWidget() {
    return new JApplet();
  }

  @Override
  public Component cloneWidget() {
    JRootPane jrp = new JRootPane();
    JApplet japplet = (JApplet) getWidget();
    JMenuBar jmb = japplet.getJMenuBar();
    if (jmb != null) {
      WidgetAdapter jmbAdapter = WidgetAdapter.getWidgetAdapter(jmb);
      JMenuBar jmenubar = (JMenuBar) jmbAdapter.cloneWidget();
      jrp.setJMenuBar(jmenubar);
    }
    Container container = (Container) contentAdapter.cloneWidget();
    jrp.setContentPane(container);
    return jrp;
  }

  public Component getParentContainer() {
    return contentAdapter.getWidget();
  }

  @Override
  public void addAfter(Component hovering, Component dragged) {
    contentAdapter.addAfter(hovering, dragged);
  }

  @Override
  public void addBefore(Component hovering, Component dragged) {
    contentAdapter.addBefore(hovering, dragged);
  }

  @Override
  public void addChild(Component widget) {
    contentAdapter.addChild(widget);
  }

  @Override
  public boolean doAlignment(String id) {
    return contentAdapter.doAlignment(id);
  }

  @Override
  public IUndoableOperation doKeyPressed(KeyEvent e) {
    return contentAdapter.doKeyPressed(e);
  }

  @Override
  public Component getChild(int index) {
    JApplet japplet = (JApplet) getWidget();
    JMenuBar jmb = japplet.getJMenuBar();
    if (jmb == null)
      return contentAdapter.getChild(index);
    else if (index == 0)
      return jmb;
    else
      return contentAdapter.getChild(index - 1);
  }

  @Override
  public int getChildCount() {
    JApplet japplet = (JApplet) getWidget();
    JMenuBar jmb = japplet.getJMenuBar();
    int count = contentAdapter.getChildCount();
    return jmb == null ? count : (count + 1);
  }

  public String toString() {
    if (isRoot()) {
      return "[" + getWidgetName() + "]";
    } else {
      return getName() + " [" + getWidgetName() + "]";
    }
  }

  @Override
  public int getIndexOfChild(Component child) {
    JApplet japplet = (JApplet) getWidget();
    JMenuBar jmb = japplet.getJMenuBar();
    if (jmb == null)
      return contentAdapter.getIndexOfChild(child);
    else if (jmb == child)
      return 0;
    else
      return contentAdapter.getIndexOfChild(child) + 1;
  }

  @Override
  public boolean allowChildResize(Component child) {
    if (child instanceof JMenuBar)
      return false;
    return contentAdapter.allowChildResize(child);
  }

  public Point convertToGlobal(Point p) {
    JApplet japplet = (JApplet) getWidget();
    JMenuBar jmb = japplet.getJMenuBar();
    if (jmb == null)
      return contentAdapter.convertToGlobal(p);
    else {
      p = SwingUtilities.convertPoint(jrootPane, p, contentPane);
      return contentAdapter.convertToGlobal(p);
    }
  }

  public Point convertToLocal(Point p) {
    return contentAdapter.convertToLocal(p);
  }

  public WidgetAdapter getRootAdapter() {
    return this;
  }

  public boolean removeChild(Component child) {
    if (child instanceof JMenuBar) {
      JApplet japplet = (JApplet) getWidget();
      japplet.setJMenuBar(null);
      return true;
    } else
      return contentAdapter.removeChild(child);
  }

  public WidgetAdapter getContentAdapter() {
    return contentAdapter;
  }

  @Override
  public boolean isChildVisible(Component child) {
    return contentAdapter.isChildVisible(child);
  }

  @Override
  public void showChild(Component widget) {
    contentAdapter.showChild(widget);
  }

  @Override
  public void adjustLayout(Component widget) {
    contentAdapter.adjustLayout(widget);
  }

  @Override
  public boolean isSelectionAlignResize(String id) {
    return contentAdapter.isSelectionAlignResize(id);
  }

  @Override
  public Class getWidgetClass() {
    return JApplet.class;
  }

  @Override
  public Object getAdapter(Class adapterClass) {
    if(adapterClass==MouseInputListener.class){
      LayoutAdapter adapter=contentAdapter.getLayoutAdapter();
      if(adapter!=null)
        return adapter.getAdapter(adapterClass);
      else
        return null;
    }else
      return super.getAdapter(adapterClass);
  }
}
TOP

Related Classes of org.dyno.visual.swing.widgets.JAppletAdapter

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.