Skip to content

Commit

Permalink
CHE-4614 Move plugin-dashboard to ide core (eclipse-che#4790)
Browse files Browse the repository at this point in the history
* CHE-4614 Move plugin-dashboard to ide core
  • Loading branch information
Vitaliy Guliy committed Apr 21, 2017
1 parent 483539a commit 1ac9529
Show file tree
Hide file tree
Showing 9 changed files with 139 additions and 118 deletions.
6 changes: 0 additions & 6 deletions dashboard/src/app/ide/ide-config.ts
Expand Up @@ -19,9 +19,6 @@ import IdeIFrameCtrl from './ide-iframe/ide-iframe.controller';
import IdeIFrame from './ide-iframe/ide-iframe.directive';
import IdeIFrameSvc from './ide-iframe/ide-iframe.service';

import IdeIFrameButtonLinkCtrl from './ide-iframe-button-link/ide-iframe-button-link.controller';
import IdeIFrameButtonLink from './ide-iframe-button-link/ide-iframe-button-link.directive';

export class IdeConfig {

constructor(register) {
Expand All @@ -32,9 +29,6 @@ export class IdeConfig {
register.controller('IdeIFrameCtrl', IdeIFrameCtrl);
register.directive('ideIframe', IdeIFrame);

register.controller('IdeIFrameButtonLinkCtrl', IdeIFrameButtonLinkCtrl);
register.directive('ideIframeButtonLink', IdeIFrameButtonLink);

let ideProvider = {
title: (params) => {return params.workspaceName},
templateUrl: 'app/ide/ide.html',
Expand Down

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

15 changes: 13 additions & 2 deletions dashboard/src/app/ide/ide-iframe/ide-iframe.service.ts
Expand Up @@ -22,11 +22,12 @@ class IdeIFrameSvc {
* Default constructor that is using resource
* @ngInject for Dependency injection
*/
constructor ($timeout, $compile, $rootScope, $location, $window, cheUIElementsInjectorService) {
constructor ($timeout, $compile, $rootScope, $location, $window, $mdSidenav, cheUIElementsInjectorService) {
this.cheUIElementsInjectorService = cheUIElementsInjectorService;
this.$timeout = $timeout;
this.$compile = $compile;
this.$location = $location;
this.$mdSidenav = $mdSidenav;

$window.addEventListener("message", (event) => {
if ("show-ide" === event.data) {
Expand All @@ -37,11 +38,21 @@ class IdeIFrameSvc {
$rootScope.hideLoader = true;
});
}
} else if ("show-workspaces" === event.data){

} else if ("show-workspaces" === event.data) {
$rootScope.$apply(() => {
$location.path('/workspaces');
});

} else if ("show-navbar" === event.data) {
$rootScope.hideNavbar = false;
$mdSidenav('left').toggle();

} else if ("hide-navbar" === event.data) {
$rootScope.hideNavbar = true;
$mdSidenav('left').close();
}

}, false);
}

Expand Down
Expand Up @@ -26,4 +26,10 @@ public interface DashboardLocalizationConstant extends Messages {
@Key("open.dashboard.url.workspaces")
String openDashboardUrlWorkspaces();

@Key("show.dashboard.navbar.toolbar-button.title")
String showDashboardNavBarToolbarButtonTitle();

@Key("hide.dashboard.navbar.toolbar-button.title")
String hideDashboardNavBarToolbarButtonTitle();

}
Expand Up @@ -12,6 +12,8 @@

import com.google.gwt.dom.client.Element;
import com.google.gwt.user.client.DOM;
import com.google.gwt.user.client.Event;
import com.google.gwt.user.client.EventListener;
import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.Widget;
import com.google.inject.Inject;
Expand All @@ -25,7 +27,7 @@
import org.eclipse.che.ide.api.workspace.event.WorkspaceStartedEvent;
import org.eclipse.che.ide.api.workspace.event.WorkspaceStoppedEvent;
import org.eclipse.che.ide.ui.Tooltip;
import static org.eclipse.che.ide.ui.menu.PositionController.HorizontalAlign.RIGHT;
import static org.eclipse.che.ide.ui.menu.PositionController.HorizontalAlign.LEFT;
import static org.eclipse.che.ide.ui.menu.PositionController.VerticalAlign.BOTTOM;

/**
Expand All @@ -41,6 +43,7 @@ public class RedirectToDashboardAction extends Action implements CustomComponent
private final AppContext appContext;

private Element arrow;
private Tooltip tooltip;

@Inject
public RedirectToDashboardAction(DashboardLocalizationConstant constant,
Expand All @@ -65,18 +68,43 @@ public Widget createCustomComponent(Presentation presentation) {
panel.setWidth("24px");
panel.setHeight("24px");

arrow = DOM.createAnchor();
arrow.setClassName(resources.dashboardCSS().dashboardArrow());
arrow.setInnerHTML("<i class=\"fa fa-chevron-right\" />");
panel.getElement().appendChild(arrow);

arrow.setAttribute("href", constant.openDashboardUrlWorkspace(appContext.getWorkspace().getConfig().getName()));
arrow.setAttribute("target", "_blank");

Tooltip.create((elemental.dom.Element) arrow,
BOTTOM,
RIGHT,
constant.openDashboardToolbarButtonTitle());
/**
* Show button Expanded by default if IDE is loaded in frame.
*/
if (isInFrame()) {
arrow = DOM.createDiv();
arrow.setClassName(resources.dashboardCSS().dashboardArrow());
panel.getElement().appendChild(arrow);

tooltip = Tooltip.create((elemental.dom.Element) arrow,
BOTTOM,
LEFT,
constant.hideDashboardNavBarToolbarButtonTitle());

showExpanded();

DOM.setEventListener(arrow, new EventListener() {
@Override
public void onBrowserEvent(Event event) {
onArrowClicked();
}
});
DOM.sinkEvents(arrow, Event.ONMOUSEDOWN);
} else {
arrow = DOM.createAnchor();
arrow.setClassName(resources.dashboardCSS().dashboardArrow());
panel.getElement().appendChild(arrow);

tooltip = Tooltip.create((elemental.dom.Element) arrow,
BOTTOM,
LEFT,
constant.openDashboardToolbarButtonTitle());

showCollapsed();

arrow.setAttribute("href", constant.openDashboardUrlWorkspace(appContext.getWorkspace().getConfig().getName()));
arrow.setAttribute("target", "_blank");
}

return panel;
}
Expand All @@ -95,4 +123,80 @@ public void onWorkspaceStopped(WorkspaceStoppedEvent event) {
}
}

/**
* Determines whether the IDE is loaded inside frame.
* @return <b>true</b> if IDE is loaded in frame
*/
private native boolean isInFrame() /*-{
if ($wnd == $wnd.parent) {
return false;
}
return true;
}-*/;

/**
* Makes arrow left-oriented.
* Dashboard navigation bar should be visible.
*/
private native void showExpanded() /*-{
var elem = this.@org.eclipse.che.ide.ext.dashboard.client.RedirectToDashboardAction::arrow;
if (!elem) {
return;
}
elem.innerHTML = "<i class=\"fa fa-chevron-left\" />";
elem.expanded = true;
var tooltip = this.@org.eclipse.che.ide.ext.dashboard.client.RedirectToDashboardAction::tooltip;
if (!tooltip) {
return;
}
var constant = this.@org.eclipse.che.ide.ext.dashboard.client.RedirectToDashboardAction::constant;
var message = constant.@org.eclipse.che.ide.ext.dashboard.client.DashboardLocalizationConstant::hideDashboardNavBarToolbarButtonTitle()();
tooltip.@org.eclipse.che.ide.ui.Tooltip::setTitle(*)(message);
}-*/;

/**
* Makes arrow right-oriented.
* Dashboard navigation bar should be hidden.
*/
private native void showCollapsed() /*-{
var elem = this.@org.eclipse.che.ide.ext.dashboard.client.RedirectToDashboardAction::arrow;
if (!elem) {
return;
}
elem.innerHTML = "<i class=\"fa fa-chevron-right\" />";
elem.expanded = false;
var tooltip = this.@org.eclipse.che.ide.ext.dashboard.client.RedirectToDashboardAction::tooltip;
if (!tooltip) {
return;
}
var constant = this.@org.eclipse.che.ide.ext.dashboard.client.RedirectToDashboardAction::constant;
var message = constant.@org.eclipse.che.ide.ext.dashboard.client.DashboardLocalizationConstant::showDashboardNavBarToolbarButtonTitle()();
tooltip.@org.eclipse.che.ide.ui.Tooltip::setTitle(*)(message);
}-*/;

/**
* Handles clicking on the arrow.
*/
private native void onArrowClicked() /*-{
var elem = this.@org.eclipse.che.ide.ext.dashboard.client.RedirectToDashboardAction::arrow;
if (!elem) {
return;
}
if (elem.expanded) {
$wnd.parent.postMessage("hide-navbar", "*");
this.@org.eclipse.che.ide.ext.dashboard.client.RedirectToDashboardAction::showCollapsed()();
} else {
$wnd.parent.postMessage("show-navbar", "*");
this.@org.eclipse.che.ide.ext.dashboard.client.RedirectToDashboardAction::showExpanded()();
}
}-*/;

}
Expand Up @@ -13,3 +13,6 @@
open.dashboard.toolbar-button.title = Open dashboard
open.dashboard.url.workspace = /dashboard/#/ide/{0}
open.dashboard.url.workspaces = /dashboard/#/workspaces

show.dashboard.navbar.toolbar-button.title = Show navigation bar
hide.dashboard.navbar.toolbar-button.title = Hide navigation bar

0 comments on commit 1ac9529

Please sign in to comment.