/************************************************************************************
* 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.Dimension;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import org.dyno.visual.swing.base.ExtensionRegistry;
import org.dyno.visual.swing.plugin.spi.CompositeAdapter;
import org.dyno.visual.swing.plugin.spi.WidgetAdapter;
@SuppressWarnings("unchecked")
public class JMenuBarAdapter extends CompositeAdapter {
public JMenuBarAdapter() {
super(null);
}
@Override
public Component cloneWidget() {
JMenuBar copy = (JMenuBar) super.cloneWidget();
JMenuBar origin = (JMenuBar) getWidget();
int count = origin.getMenuCount();
for (int i = 0; i < count; i++) {
Component child = getChild(i);
WidgetAdapter adapter = WidgetAdapter.getWidgetAdapter(child);
copy.add(adapter.cloneWidget());
}
return copy;
}
public boolean isResizable() {
return false;
}
@Override
public boolean isMoveable() {
return true;
}
@Override
public int getChildCount() {
JMenuBar origin = (JMenuBar) getWidget();
return origin.getMenuCount();
}
@Override
public Component getChild(int index) {
JMenuBar origin = (JMenuBar) getWidget();
return origin.getMenu(index);
}
@Override
public void addChild(Component widget) {
JMenuBar origin = (JMenuBar) getWidget();
origin.add(widget);
}
@Override
public void removeAllChild() {
JMenuBar origin = (JMenuBar) getWidget();
origin.removeAll();
}
@Override
public boolean removeChild(Component child) {
JMenuAdapter jmenuAdapter=(JMenuAdapter)WidgetAdapter.getWidgetAdapter(child);
jmenuAdapter.hidePopup();
JMenuBar origin = (JMenuBar) getWidget();
origin.remove(child);
origin.doLayout();
origin.repaint();
Dimension size=child.getPreferredSize();
child.setSize(size);
child.doLayout();
return true;
}
@Override
protected Component createWidget() {
JMenuBar jmb = new JMenuBar();
WidgetAdapter menuAdapter = ExtensionRegistry
.createWidgetAdapter(JMenu.class);
JMenu jmenu = (JMenu) menuAdapter.getWidget();
jmb.add(jmenu);
jmb.setSize(100, 25);
jmb.doLayout();
return jmb;
}
@Override
protected Component newWidget() {
return new JMenuBar();
}
@Override
public void addChildByConstraints(Component child, Object constraints) {
}
@Override
public Object getChildConstraints(Component child) {
return null;
}
@Override
public Class getWidgetClass() {
return JMenuBar.class;
}
}