/*
* Copyright 2012 Red Hat, Inc. and/or its affiliates.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package org.drools.workbench.client;
import javax.inject.Inject;
import com.google.gwt.user.client.Window;
import org.drools.workbench.client.resources.i18n.AppConstants;
import org.guvnor.common.services.shared.config.AppConfigService;
import org.jboss.errai.common.client.api.Caller;
import org.jboss.errai.ioc.client.api.EntryPoint;
import org.kie.workbench.common.services.shared.service.PlaceManagerActivityService;
import org.kie.workbench.common.workbench.client.admin.DefaultAdminPageHelper;
import org.kie.workbench.common.workbench.client.entrypoint.DefaultWorkbenchEntryPoint;
import org.kie.workbench.common.workbench.client.menu.DefaultWorkbenchFeaturesMenusHelper;
import org.uberfire.client.mvp.AbstractWorkbenchPerspectiveActivity;
import org.uberfire.client.mvp.ActivityBeansCache;
import org.uberfire.client.mvp.PlaceManager;
import org.uberfire.client.workbench.widgets.menu.WorkbenchMenuBarPresenter;
import org.uberfire.ext.preferences.client.admin.page.AdminPage;
import org.uberfire.mvp.impl.DefaultPlaceRequest;
import org.uberfire.workbench.model.menu.MenuFactory;
import org.uberfire.workbench.model.menu.Menus;
@EntryPoint
public class DroolsWorkbenchEntryPoint extends DefaultWorkbenchEntryPoint {
protected AppConstants constants = AppConstants.INSTANCE;
protected PlaceManager placeManager;
protected DefaultWorkbenchFeaturesMenusHelper menusHelper;
protected WorkbenchMenuBarPresenter menuBar;
protected AdminPage adminPage;
protected DefaultAdminPageHelper adminPageHelper;
@Inject
public DroolsWorkbenchEntryPoint(final Caller<AppConfigService> appConfigService,
final Caller<PlaceManagerActivityService> pmas,
final ActivityBeansCache activityBeansCache,
final PlaceManager placeManager,
final DefaultWorkbenchFeaturesMenusHelper menusHelper,
final WorkbenchMenuBarPresenter menuBar,
final AdminPage adminPage,
final DefaultAdminPageHelper adminPageHelper) {
super(appConfigService,
pmas,
activityBeansCache);
this.placeManager = placeManager;
this.menusHelper = menusHelper;
this.menuBar = menuBar;
this.adminPage = adminPage;
this.adminPageHelper = adminPageHelper;
}
@Override
public void setupMenu() {
adminPage.addScreen("root",
AppConstants.INSTANCE.Settings());
adminPage.setDefaultScreen("root");
adminPage.addPreference("root",
"LibraryPreferences",
AppConstants.INSTANCE.Library(),
"fa-cubes",
"preferences");
final AbstractWorkbenchPerspectiveActivity defaultPerspective = menusHelper.getDefaultPerspectiveActivity();
menusHelper.addRolesMenuItems();
menusHelper.addUtilitiesMenuItems();
final Menus menus = MenuFactory
.newTopLevelMenu(constants.Home())
.respondsWith(() -> {
if (defaultPerspective != null) {
placeManager.goTo(new DefaultPlaceRequest(defaultPerspective.getIdentifier()));
} else {
Window.alert("Default perspective not found.");
}
})
.endMenu()
.newTopLevelMenu(constants.Perspectives())
.withItems(menusHelper.getPerspectivesMenuItems())
.endMenu()
.build();
menuBar.addMenus(menus);
}
}