This commit is contained in:
jfrijters 2010-10-28 16:03:22 +00:00
Родитель bfddc0b2ac
Коммит c7c7ca100c
1 изменённых файлов: 47 добавлений и 30 удалений

Просмотреть файл

@ -360,6 +360,10 @@ namespace ikvm.awt
public override java.awt.peer.PopupMenuPeer createPopupMenu(java.awt.PopupMenu target) public override java.awt.peer.PopupMenuPeer createPopupMenu(java.awt.PopupMenu target)
{ {
for (int i = 0; i < target.getItemCount(); i++)
{
target.getItem(i).addNotify();
}
java.awt.peer.PopupMenuPeer peer = Invoke<NetPopupMenuPeer>(delegate { return new NetPopupMenuPeer(target); }); java.awt.peer.PopupMenuPeer peer = Invoke<NetPopupMenuPeer>(delegate { return new NetPopupMenuPeer(target); });
targetCreatedPeer(target, peer); targetCreatedPeer(target, peer);
return peer; return peer;
@ -4553,39 +4557,36 @@ namespace ikvm.awt
} }
} }
class NetPopupMenuPeer : java.awt.peer.PopupMenuPeer sealed class NetPopupMenuPeer : java.awt.peer.PopupMenuPeer
{ {
private readonly java.awt.PopupMenu target;
private readonly ContextMenu menu = new ContextMenu();
internal NetPopupMenuPeer(java.awt.PopupMenu target) internal NetPopupMenuPeer(java.awt.PopupMenu target)
{ {
this.target = target;
for (int i = 0; i < target.getItemCount(); i++)
{
addItem(target.getItem(i));
}
} }
public void show(java.awt.Event e) public void show(java.awt.Event e)
{ {
throw new NotImplementedException(); show((java.awt.Component)e.target, new java.awt.Point(e.x, e.y));
} }
public void show(java.awt.Component origin, java.awt.Point p) public void show(java.awt.Component origin, java.awt.Point p)
{ {
NetComponentPeer peer = (NetComponentPeer)NetToolkit.targetToPeer(origin); NetComponentPeer peer = (NetComponentPeer)origin.getPeer();
java.awt.Event e = new java.awt.Event(origin, 0, java.awt.Event.MOUSE_DOWN, p.x, p.y, 0, 0); Point pt = new Point(p.x, p.y);
if (peer == null) pt.Offset(- peer.getInsetsLeft(), - peer.getInsetsTop());
{ NetToolkit.Invoke(delegate { menu.Show(peer.Control, pt); });
java.awt.Component nativeOrigin = NetToolkit.getNativeContainer(origin);
e.target = nativeOrigin;
}
e.x = p.x;
e.y = p.y;
nativeShow(e);
}
private void nativeShow(java.awt.Event e)
{
} }
public void dispose() public void dispose()
{ {
throw new NotImplementedException(); NetToolkit.Invoke(delegate { menu.Dispose(); });
} }
public void setFont(java.awt.Font f) public void setFont(java.awt.Font f)
@ -4595,38 +4596,54 @@ namespace ikvm.awt
public void disable() public void disable()
{ {
throw new NotImplementedException(); setEnabled(false);
} }
public void enable() public void enable()
{ {
throw new NotImplementedException(); setEnabled(true);
} }
public void setEnabled(bool b) public void setEnabled(bool b)
{ {
throw new NotImplementedException(); NetToolkit.Invoke(delegate
} {
for (int i = 0; i < target.getItemCount(); i++)
{
menu.MenuItems[i].Enabled = b && target.getItem(i).isEnabled();
}
});
}
public void setLabel(string str) public void setLabel(string str)
{ {
throw new NotImplementedException();
} }
public void addItem(java.awt.MenuItem mi) public void addItem(java.awt.MenuItem item)
{ {
throw new NotImplementedException(); if (item.getPeer() == null)
} {
item.addNotify();
}
if (item.getPeer() is NetMenuItemPeer)
{
NetToolkit.Invoke(delegate { menu.MenuItems.Add(((NetMenuItemPeer)item.getPeer()).menuitem); });
}
else
{
NetToolkit.Invoke(delegate { menu.MenuItems.Add(((NetMenuPeer)item.getPeer()).menu); });
}
}
public void addSeparator() public void addSeparator()
{ {
throw new NotImplementedException(); NetToolkit.Invoke(delegate { menu.MenuItems.Add(new MenuItem("-")); });
} }
public void delItem(int i) public void delItem(int i)
{ {
throw new NotImplementedException(); NetToolkit.Invoke(delegate { menu.MenuItems.RemoveAt(i); });
} }
} }
class NetTrayIconPeer : java.awt.peer.TrayIconPeer class NetTrayIconPeer : java.awt.peer.TrayIconPeer