|
Link Here
|
| 43 |
import org.eclipse.e4.ui.model.application.ui.menu.ItemType; |
43 |
import org.eclipse.e4.ui.model.application.ui.menu.ItemType; |
| 44 |
import org.eclipse.e4.ui.model.application.ui.menu.MDirectMenuItem; |
44 |
import org.eclipse.e4.ui.model.application.ui.menu.MDirectMenuItem; |
| 45 |
import org.eclipse.e4.ui.model.application.ui.menu.MDirectToolItem; |
45 |
import org.eclipse.e4.ui.model.application.ui.menu.MDirectToolItem; |
|
|
46 |
import org.eclipse.e4.ui.model.application.ui.menu.MHandledItem; |
| 46 |
import org.eclipse.e4.ui.model.application.ui.menu.MHandledMenuItem; |
47 |
import org.eclipse.e4.ui.model.application.ui.menu.MHandledMenuItem; |
| 47 |
import org.eclipse.e4.ui.model.application.ui.menu.MHandledToolItem; |
48 |
import org.eclipse.e4.ui.model.application.ui.menu.MHandledToolItem; |
| 48 |
import org.eclipse.e4.ui.model.application.ui.menu.MMenu; |
49 |
import org.eclipse.e4.ui.model.application.ui.menu.MMenu; |
|
Link Here
|
| 58 |
import org.eclipse.jface.action.IMenuCreator; |
59 |
import org.eclipse.jface.action.IMenuCreator; |
| 59 |
import org.eclipse.jface.action.MenuManager; |
60 |
import org.eclipse.jface.action.MenuManager; |
| 60 |
import org.eclipse.jface.resource.ImageDescriptor; |
61 |
import org.eclipse.jface.resource.ImageDescriptor; |
|
|
62 |
import org.eclipse.jface.util.IPropertyChangeListener; |
| 63 |
import org.eclipse.jface.util.PropertyChangeEvent; |
| 61 |
import org.eclipse.swt.widgets.Control; |
64 |
import org.eclipse.swt.widgets.Control; |
| 62 |
import org.eclipse.swt.widgets.Menu; |
65 |
import org.eclipse.swt.widgets.Menu; |
| 63 |
import org.eclipse.ui.IActionDelegate; |
66 |
import org.eclipse.ui.IActionDelegate; |
|
Link Here
|
| 475 |
item.setType(ItemType.PUSH); |
478 |
item.setType(ItemType.PUSH); |
| 476 |
} else if (IWorkbenchRegistryConstants.STYLE_TOGGLE.equals(style)) { |
479 |
} else if (IWorkbenchRegistryConstants.STYLE_TOGGLE.equals(style)) { |
| 477 |
item.setType(ItemType.CHECK); |
480 |
item.setType(ItemType.CHECK); |
|
|
481 |
IContextFunction generator = new ContextFunction() { |
| 482 |
private ActionDescriptor descriptor = null; |
| 483 |
|
| 484 |
private ActionDescriptor getDescriptor(IWorkbenchWindow window) { |
| 485 |
if (descriptor == null) { |
| 486 |
descriptor = new ActionDescriptor(element, ActionDescriptor.T_WORKBENCH, |
| 487 |
window); |
| 488 |
} |
| 489 |
return descriptor; |
| 490 |
} |
| 491 |
|
| 492 |
@Override |
| 493 |
public Object compute(IEclipseContext context) { |
| 494 |
IWorkbenchWindow window = context.get(IWorkbenchWindow.class); |
| 495 |
if (window == null) { |
| 496 |
return null; |
| 497 |
} |
| 498 |
final MHandledItem model = context.get(MHandledItem.class); |
| 499 |
if (model == null) { |
| 500 |
return null; |
| 501 |
} |
| 502 |
ActionDescriptor desc = getDescriptor(window); |
| 503 |
final IAction action = desc.getAction(); |
| 504 |
final IPropertyChangeListener propListener = new IPropertyChangeListener() { |
| 505 |
public void propertyChange(PropertyChangeEvent event) { |
| 506 |
if (IAction.CHECKED.equals(event.getProperty())) { |
| 507 |
boolean checked = false; |
| 508 |
if (event.getNewValue() instanceof Boolean) { |
| 509 |
checked = ((Boolean) event.getNewValue()).booleanValue(); |
| 510 |
} |
| 511 |
model.setSelected(checked); |
| 512 |
} |
| 513 |
} |
| 514 |
}; |
| 515 |
action.addPropertyChangeListener(propListener); |
| 516 |
Runnable obj = new Runnable() { |
| 517 |
@Execute |
| 518 |
public void run() { |
| 519 |
action.removePropertyChangeListener(propListener); |
| 520 |
} |
| 521 |
}; |
| 522 |
model.setSelected(action.isChecked()); |
| 523 |
return obj; |
| 524 |
} |
| 525 |
}; |
| 526 |
item.getTransientData().put(ItemType.CHECK.toString(), generator); |
| 478 |
} else if (IWorkbenchRegistryConstants.STYLE_RADIO.equals(style)) { |
527 |
} else if (IWorkbenchRegistryConstants.STYLE_RADIO.equals(style)) { |
| 479 |
item.setType(ItemType.RADIO); |
528 |
item.setType(ItemType.RADIO); |
| 480 |
} else if (IWorkbenchRegistryConstants.STYLE_PULLDOWN.equals(style)) { |
529 |
} else if (IWorkbenchRegistryConstants.STYLE_PULLDOWN.equals(style)) { |