Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'target_explorer')
-rw-r--r--target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/plugin.properties3
-rw-r--r--target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/plugin.xml31
-rw-r--r--target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/handler/DefaultContextActionsCommandHandler.java78
-rw-r--r--target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/handler/DefaultContextActionsMenuContribution.java48
-rw-r--r--target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/handler/DefaultContextActionsToolbarContribution.java239
-rw-r--r--target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/nls/Messages.java6
-rw-r--r--target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/nls/Messages.properties4
7 files changed, 157 insertions, 252 deletions
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/plugin.properties b/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/plugin.properties
index 4f118cf5d..cbe139c00 100644
--- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/plugin.properties
+++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/plugin.properties
@@ -105,6 +105,9 @@ command.history.tooltip=Lists the recently executed actions.
command.historyLast.label=Execute Last Action
command.historyLast.mnemonic=x
+command.defaultContextActions.label=Target Actions
+command.defaultContextActions.tooltip=Target actions for the selected connection.
+
toolbar.label=System Management
matchColors.toolbarWarningBackground.label=Connection Toolbar Warning Background
matchColors.toolbarWarningBackground.description=The color used to render the background of the connection dropdown in a warning status. \ No newline at end of file
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/plugin.xml b/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/plugin.xml
index 4cdb7fda5..7233ee18c 100644
--- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/plugin.xml
+++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/plugin.xml
@@ -638,10 +638,17 @@
</menuContribution>
<menuContribution locationURI="toolbar:org.eclipse.tcf.te.tcf.ui.toolbar?after=group.actions">
- <control
- class="org.eclipse.tcf.te.tcf.ui.handler.DefaultContextActionsToolbarContribution"
- id="org.eclipse.tcf.te.tcf.ui.DefaultContextActionsToolbarContribution">
- </control>
+ <command
+ commandId="org.eclipse.tcf.te.tcf.ui.DefaultContextActionsToolbarContribution"
+ style="pulldown"
+ icon="icons/obj16/targets_view.gif"
+ tooltip="%command.defaultContextActions.tooltip">
+ </command>
+ </menuContribution>
+
+ <menuContribution
+ locationURI="menu:org.eclipse.tcf.te.tcf.ui.DefaultContextActionsToolbarContribution"
+ class="org.eclipse.tcf.te.tcf.ui.handler.DefaultContextActionsMenuContribution">
</menuContribution>
<menuContribution locationURI="menu:org.eclipse.tcf.te.tcf.ui.DefaultContextActionsToolbarContribution?after=group.history">
@@ -819,6 +826,12 @@
helpContextId="org.eclipse.tcf.te.tcf.ui.command_HistoryLast"
name="%command.historyLast.label">
</command>
+ <command
+ id="org.eclipse.tcf.te.tcf.ui.DefaultContextActionsToolbarContribution"
+ categoryId="org.eclipse.tcf.te.ui.commands.category"
+ name="%command.defaultContextActions.label"
+ description="%command.defaultContextActions.tooltip">
+ </command>
</extension>
<!-- Command shortcuts -->
@@ -1137,6 +1150,16 @@
</with>
</enabledWhen>
</handler>
+
+ <handler
+ commandId="org.eclipse.tcf.te.tcf.ui.DefaultContextActionsToolbarContribution"
+ class="org.eclipse.tcf.te.tcf.ui.handler.DefaultContextActionsCommandHandler">
+ <activeWhen>
+ <with variable="defaultContextSelection">
+ <instanceof value="org.eclipse.tcf.te.tcf.locator.interfaces.nodes.IPeerNode"/>
+ </with>
+ </activeWhen>
+ </handler>
</extension>
<!-- Tabbed properties view contributions -->
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/handler/DefaultContextActionsCommandHandler.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/handler/DefaultContextActionsCommandHandler.java
new file mode 100644
index 000000000..cc5ebe764
--- /dev/null
+++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/handler/DefaultContextActionsCommandHandler.java
@@ -0,0 +1,78 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Wind River Systems, Inc. and others. 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
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tcf.te.tcf.ui.handler;
+
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.jface.action.ContributionManager;
+import org.eclipse.jface.action.IContributionItem;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.action.Separator;
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.graphics.Rectangle;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.ToolItem;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.actions.QuickMenuCreator;
+import org.eclipse.ui.menus.IMenuService;
+
+public class DefaultContextActionsCommandHandler extends AbstractHandler {
+
+ protected static final String DEFAULT_CONTEXT_ACTIONS_URI = "org.eclipse.tcf.te.tcf.ui.DefaultContextActionsToolbarContribution"; //$NON-NLS-1$
+
+ protected Point menuLocation = null;
+
+ private final QuickMenuCreator fMenuCreator = new QuickMenuCreator() {
+ @SuppressWarnings("cast")
+ @Override
+ protected void fillMenu(IMenuManager menu) {
+ if (!(menu instanceof ContributionManager)) {
+ return;
+ }
+ IMenuService service = (IMenuService) PlatformUI.getWorkbench()
+ .getService(IMenuService.class);
+
+ menu.add(new Separator("group.connect")); //$NON-NLS-1$
+ menu.add(new Separator("group.launch")); //$NON-NLS-1$
+ menu.add(new Separator("group.launch.rundebug")); //$NON-NLS-1$
+ menu.add(new Separator("group.history")); //$NON-NLS-1$
+ menu.add(new Separator("group.additions")); //$NON-NLS-1$
+ service.populateContributionManager((ContributionManager) menu, "menu:" + DEFAULT_CONTEXT_ACTIONS_URI); //$NON-NLS-1$
+ for (IContributionItem item : menu.getItems()) {
+ item.update();
+ }
+ }
+
+ @Override
+ protected Point computeMenuLocation(Control focus) {
+ if (menuLocation != null) {
+ return menuLocation;
+ }
+ return super.computeMenuLocation(focus);
+ }
+ };
+
+ @Override
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ // Get the position of the ToolItem
+ Event eventTrigger = (Event) event.getTrigger();
+ ToolItem toolItem = (ToolItem) eventTrigger.widget;
+ Rectangle bounds = toolItem.getBounds();
+ if ( bounds != null ) {
+ menuLocation = toolItem.getParent().toDisplay(bounds.x, bounds.y + bounds.height);
+ }
+
+ fMenuCreator.createMenu();
+ return null;
+ }
+
+}
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/handler/DefaultContextActionsMenuContribution.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/handler/DefaultContextActionsMenuContribution.java
new file mode 100644
index 000000000..e16b7a1e3
--- /dev/null
+++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/handler/DefaultContextActionsMenuContribution.java
@@ -0,0 +1,48 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Wind River Systems, Inc. and others. 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
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.tcf.te.tcf.ui.handler;
+
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.jface.action.IContributionItem;
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.action.Separator;
+import org.eclipse.tcf.te.runtime.utils.StatusHelper;
+import org.eclipse.tcf.te.tcf.ui.activator.UIPlugin;
+import org.eclipse.ui.menus.ExtensionContributionFactory;
+import org.eclipse.ui.menus.IContributionRoot;
+import org.eclipse.ui.menus.IMenuService;
+import org.eclipse.ui.services.IServiceLocator;
+
+public class DefaultContextActionsMenuContribution extends ExtensionContributionFactory {
+
+ @SuppressWarnings("cast")
+ @Override
+ public void createContributionItems(IServiceLocator serviceLocator, IContributionRoot additions) {
+ try {
+ MenuManager menuMgr = new MenuManager();
+ menuMgr.add(new Separator("group.connect")); //$NON-NLS-1$
+ menuMgr.add(new Separator("group.launch")); //$NON-NLS-1$
+ menuMgr.add(new Separator("group.launch.rundebug")); //$NON-NLS-1$
+ menuMgr.add(new Separator("group.history")); //$NON-NLS-1$
+ menuMgr.add(new Separator("group.additions")); //$NON-NLS-1$
+ IMenuService service = (IMenuService) serviceLocator.getService(IMenuService.class);
+ service.populateContributionManager(menuMgr, "menu:" + getLocation()); //$NON-NLS-1$
+ for (IContributionItem item : menuMgr.getItems()) {
+ additions.addContributionItem(item, null);
+ item.update();
+ }
+ }
+ catch (Exception e) {
+ if (Platform.inDebugMode()) {
+ Platform.getLog(UIPlugin.getDefault().getBundle()).log(StatusHelper.getStatus(e));
+ }
+ }
+ }
+}
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/handler/DefaultContextActionsToolbarContribution.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/handler/DefaultContextActionsToolbarContribution.java
deleted file mode 100644
index bcca971da..000000000
--- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/handler/DefaultContextActionsToolbarContribution.java
+++ /dev/null
@@ -1,239 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2014 Wind River Systems, Inc. and others. 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
- *
- * Contributors:
- * Wind River Systems - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.tcf.te.tcf.ui.handler;
-
-import java.util.EventObject;
-
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.jface.action.IContributionItem;
-import org.eclipse.jface.action.MenuManager;
-import org.eclipse.jface.action.Separator;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.swt.widgets.ToolBar;
-import org.eclipse.swt.widgets.ToolItem;
-import org.eclipse.tcf.te.runtime.concurrent.util.ExecutorsUtil;
-import org.eclipse.tcf.te.runtime.events.ChangeEvent;
-import org.eclipse.tcf.te.runtime.events.EventManager;
-import org.eclipse.tcf.te.runtime.interfaces.events.IEventListener;
-import org.eclipse.tcf.te.runtime.services.ServiceManager;
-import org.eclipse.tcf.te.runtime.utils.StatusHelper;
-import org.eclipse.tcf.te.tcf.locator.interfaces.nodes.IPeerNode;
-import org.eclipse.tcf.te.tcf.locator.interfaces.nodes.IPeerNodeProperties;
-import org.eclipse.tcf.te.tcf.locator.interfaces.services.IDefaultContextService;
-import org.eclipse.tcf.te.tcf.ui.activator.UIPlugin;
-import org.eclipse.tcf.te.tcf.ui.internal.ImageConsts;
-import org.eclipse.tcf.te.tcf.ui.nls.Messages;
-import org.eclipse.tcf.te.ui.views.handler.ShowInSystemManagementHandler;
-import org.eclipse.tcf.te.ui.views.interfaces.IUIConstants;
-import org.eclipse.ui.menus.IMenuService;
-import org.eclipse.ui.menus.IWorkbenchContribution;
-import org.eclipse.ui.menus.WorkbenchWindowControlContribution;
-import org.eclipse.ui.services.IServiceLocator;
-
-/**
- * DefaultContextActionsToolbarContribution
- */
-public class DefaultContextActionsToolbarContribution extends WorkbenchWindowControlContribution
-implements IWorkbenchContribution, IEventListener {
-
- ToolBar toolbar = null;
- ToolItem item = null;
-
- IServiceLocator serviceLocator = null;
-
- private MenuManager menuMgr = null;
- private Menu menu = null;
-
- private boolean clickRunning = false;
-
- /**
- * Constructor.
- */
- public DefaultContextActionsToolbarContribution() {
- this("org.eclipse.tcf.te.tcf.ui.DefaultContextActionsToolbarContribution"); //$NON-NLS-1$
- }
-
- /**
- * Constructor.
- *
- * @param id
- */
- public DefaultContextActionsToolbarContribution(String id) {
- super(id);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.ui.menus.IWorkbenchContribution#initialize(org.eclipse.ui.services.IServiceLocator)
- */
- @Override
- public void initialize(IServiceLocator serviceLocator) {
- this.serviceLocator = serviceLocator;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.action.ContributionItem#isDynamic()
- */
- @Override
- public boolean isDynamic() {
- return true;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.action.ControlContribution#createControl(org.eclipse.swt.widgets.Composite)
- */
- @Override
- protected Control createControl(Composite parent) {
- toolbar = new ToolBar(parent, SWT.FLAT);
- item = new ToolItem(toolbar, SWT.DROP_DOWN);
- item.setImage(UIPlugin.getImage(ImageConsts.SYSTEM_MGNT_VIEW));
- item.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent e) {
- IPeerNode peerNode = ServiceManager.getInstance().getService(IDefaultContextService.class).getDefaultContext(null);
- if (peerNode != null && (e.stateMask & SWT.MODIFIER_MASK) != 0 && (e.stateMask & SWT.CTRL) == SWT.CTRL && (e.stateMask & SWT.SHIFT) == SWT.SHIFT) {
- ShowInSystemManagementHandler.setAndCheckSelection(IUIConstants.ID_EXPLORER, peerNode);
- return;
- }
- onButtonClick();
- }
- });
-
-
- EventManager.getInstance().addEventListener(this, ChangeEvent.class);
-
- update();
-
- return toolbar;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.action.ContributionItem#dispose()
- */
- @Override
- public void dispose() {
- super.dispose();
-
- EventManager.getInstance().removeEventListener(this);
-
- item.dispose();
- toolbar.dispose();
-
- if (menu != null && !menu.isDisposed()) {
- menu.setVisible(false);
- menu.dispose();
- menu = null;
- }
- if (menuMgr != null) {
- menuMgr.dispose();
- menuMgr = null;
- }
- }
-
- protected void onButtonClick() {
- if (!clickRunning) {
- clickRunning = true;
- update();
- createContextMenu(toolbar);
- if (menu != null) {
- Point point = toolbar.toDisplay(toolbar.getLocation());
- menu.setLocation(point.x, point.y + toolbar.getBounds().height);
- menu.setVisible(true);
- }
- clickRunning = false;
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.action.ContributionItem#update()
- */
- @Override
- public void update() {
- if (menu != null && !menu.isDisposed()) {
- menu.setVisible(false);
- menu.dispose();
- menu = null;
- }
- if (menuMgr != null) {
- menuMgr.dispose();
- }
-
- if (item != null && !item.isDisposed()) {
- IPeerNode peerNode = ServiceManager.getInstance().getService(IDefaultContextService.class).getDefaultContext(null);
-// item.setEnabled(peerNode != null && peerNode.getConnectState() == IConnectable.STATE_CONNECTED);
-
- if (peerNode == null) {
- item.setToolTipText(Messages.DefaultContextActionsToolbarContribution_tooltip_button_noContext);
- item.setEnabled(false);
- }
- else {
- item.setToolTipText(Messages.DefaultContextActionsToolbarContribution_tooltip_button);
- item.setEnabled(true);
- }
-// else if (item.isEnabled()) {
-// item.setToolTipText(Messages.DefaultContextActionsToolbarContribution_tooltip_button);
-// }
-// else {
-// item.setToolTipText(Messages.DefaultContextActionsToolbarContribution_tooltip_button_disabled);
-// }
- }
- }
-
- protected void createContextMenu(Composite panel) {
- try {
- menuMgr = new MenuManager();
- menuMgr.add(new Separator("group.connect")); //$NON-NLS-1$
- menuMgr.add(new Separator("group.launch")); //$NON-NLS-1$
- menuMgr.add(new Separator("group.launch.rundebug")); //$NON-NLS-1$
- menuMgr.add(new Separator("group.history")); //$NON-NLS-1$
- menuMgr.add(new Separator("group.additions")); //$NON-NLS-1$
- final IMenuService service = (IMenuService) serviceLocator.getService(IMenuService.class);
- service.populateContributionManager(menuMgr, "menu:" + getId()); //$NON-NLS-1$
- for (IContributionItem item : menuMgr.getItems()) {
- item.update();
- }
- menu = menuMgr.createContextMenu(panel);
- }
- catch (Exception e) {
- if (Platform.inDebugMode()) {
- Platform.getLog(UIPlugin.getDefault().getBundle()).log(StatusHelper.getStatus(e));
- }
- menuMgr = null;
- menu = null;
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.tcf.te.runtime.interfaces.events.IEventListener#eventFired(java.util.EventObject)
- */
- @Override
- public void eventFired(EventObject event) {
- if (event instanceof ChangeEvent) {
- ChangeEvent changeEvent = (ChangeEvent)event;
- IPeerNode peerNode = ServiceManager.getInstance().getService(IDefaultContextService.class).getDefaultContext(null);
- if (changeEvent.getSource() instanceof IDefaultContextService ||
- (changeEvent.getSource() == peerNode &&
- (IPeerNodeProperties.PROPERTY_CONNECT_STATE.equals(changeEvent.getEventId()) || "properties".equals(changeEvent.getEventId())))) { //$NON-NLS-1$
- ExecutorsUtil.executeInUI(new Runnable() {
- @Override
- public void run() {
- update();
- }
- });
- }
- }
- }
-}
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/nls/Messages.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/nls/Messages.java
index 0fe932a7f..d28bb7812 100644
--- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/nls/Messages.java
+++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/nls/Messages.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2011, 2015 Wind River Systems, Inc. and others. All rights reserved.
+ * Copyright (c) 2011, 2016 Wind River Systems, Inc. and others. 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
@@ -232,10 +232,6 @@ public class Messages extends NLS {
public static String DefaultContextSelectorToolbarContribution_tooltip_button;
public static String DefaultContextSelectorToolbarContribution_tooltip_warningFix;
- public static String DefaultContextActionsToolbarContribution_tooltip_button;
- public static String DefaultContextActionsToolbarContribution_tooltip_button_disabled;
- public static String DefaultContextActionsToolbarContribution_tooltip_button_noContext;
-
public static String LoggingPreferencePage_label;
public static String LoggingPreferencePage_enabled_label;
public static String LoggingPreferencePage_monitorEnabled_label;
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/nls/Messages.properties b/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/nls/Messages.properties
index eff19ef1b..8aef9f653 100644
--- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/nls/Messages.properties
+++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.ui/src/org/eclipse/tcf/te/tcf/ui/nls/Messages.properties
@@ -172,10 +172,6 @@ DefaultContextSelectorToolbarContribution_label_new=New Connection...
DefaultContextSelectorToolbarContribution_tooltip_button=Change the default connection or create a new connection.
DefaultContextSelectorToolbarContribution_tooltip_warningFix=Fix issue
-DefaultContextActionsToolbarContribution_tooltip_button=Target actions for the selected connection.
-DefaultContextActionsToolbarContribution_tooltip_button_disabled=Please connect to see actions for the selected default connection.
-DefaultContextActionsToolbarContribution_tooltip_button_noContext=Please create a new connection first.
-
# ***** Preference Pages *****
LoggingPreferencePage_label=Logging settings for agent communication:

Back to the top