Package com.google.collide.client

Source Code of com.google.collide.client.Collide

// Copyright 2012 Google Inc. All Rights Reserved.
//
// 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 com.google.collide.client;

import com.google.collide.client.bootstrap.BootstrapSession;
import com.google.collide.client.history.HistoryUtils;
import com.google.collide.client.history.RootPlace;
import com.google.collide.client.history.HistoryUtils.ValueChangeListener;
import com.google.collide.client.status.StatusPresenter;
import com.google.collide.client.util.ClientImplementationsInjector;
import com.google.collide.client.util.Elements;
import com.google.collide.client.workspace.WorkspacePlace;
import com.google.collide.client.workspace.WorkspacePlaceNavigationHandler;
import com.google.collide.client.xhrmonitor.XhrWarden;
import com.google.collide.clientlibs.navigation.NavigationToken;
import com.google.collide.codemirror2.CodeMirror2;
import com.google.collide.json.shared.JsonArray;
import com.google.common.annotations.VisibleForTesting;
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.core.client.GWT;
import com.google.gwt.dom.client.StyleInjector;
import com.google.gwt.user.client.Window;

/**
* Entry point classes define <code>onModuleLoad()</code>.
*/
public class Collide implements EntryPoint {

  /**
   * This is the entry point method.
   */
  @Override
  public void onModuleLoad() {

    // If we do not have a valid Client ID we need to redirect back to the login page.
    if (BootstrapSession.getBootstrapSession().getActiveClientId() == null) {
      Window.Location.assign("/static/login.html");
      return;
    }

    ClientImplementationsInjector.inject();

    final AppContext appContext = AppContext.create();

    GWT.setUncaughtExceptionHandler(appContext.getUncaughtExceptionHandler());
    XhrWarden.watch();

    Resources resources = appContext.getResources();

    // TODO: Figure out why when we use the + operator to concat,
    // these Strings don't at compile time converge to a single String literal.
    // In theory they should. For now we use a StringBuilder.

    // Make sure you call getText() on your CssResource!
    StringBuilder styleBuilder = new StringBuilder();
    styleBuilder.append(resources.appCss().getText());
    styleBuilder.append(resources.baseCss().getText());
    styleBuilder.append(resources.workspaceHeaderCss().getText());
    styleBuilder.append(resources.editorToolBarCss().getText());
    styleBuilder.append(resources.defaultSimpleListCss().getText());
    styleBuilder.append(resources.workspaceShellCss().getText());
    styleBuilder.append(resources.workspaceEditorCss().getText());
    styleBuilder.append(resources.workspaceEditorBufferCss().getText());
    styleBuilder.append(resources.workspaceEditorCursorCss().getText());
    styleBuilder.append(resources.workspaceEditorConsoleViewCss().getText());
    styleBuilder.append(resources.workspaceEditorDebuggingModelCss().getText());
    styleBuilder.append(resources.workspaceEditorDebuggingSidebarCss().getText());
    styleBuilder.append(resources.workspaceEditorDebuggingSidebarBreakpointsPaneCss().getText());
    styleBuilder.append(resources.workspaceEditorDebuggingSidebarCallStackPaneCss().getText());
    styleBuilder.append(resources.workspaceEditorDebuggingSidebarControlsPaneCss().getText());
    styleBuilder.append(resources.workspaceEditorDebuggingSidebarHeaderCss().getText());
    styleBuilder.append(resources.workspaceEditorDebuggingSidebarNoApiPaneCss().getText());
    styleBuilder.append(resources.workspaceEditorDebuggingSidebarScopeVariablesPaneCss().getText());
    styleBuilder.append(resources.workspaceEditorDomInspectorCss().getText());
    styleBuilder.append(
        resources.workspaceEditorDebuggingSidebarWatchExpressionsPaneCss().getText());
    styleBuilder.append(resources.remoteObjectTreeCss().getText());
    styleBuilder.append(resources.remoteObjectNodeRendererCss().getText());
    styleBuilder.append(resources.editorDiffContainerCss().getText());
    styleBuilder.append(resources.evaluationPopupControllerCss().getText());
    styleBuilder.append(resources.goToDefinitionCss().getText());
    styleBuilder.append(resources.treeCss().getText());
    styleBuilder.append(resources.workspaceNavigationCss().getText());
    styleBuilder.append(resources.workspaceNavigationFileTreeSectionCss().getText());
    styleBuilder.append(resources.workspaceNavigationShareWorkspacePaneCss().getText());
    styleBuilder.append(resources.workspaceNavigationToolBarCss().getText());
    styleBuilder.append(resources.workspaceNavigationFileTreeNodeRendererCss().getText());
    styleBuilder.append(resources.workspaceNavigationOutlineNodeRendererCss().getText());
    styleBuilder.append(resources.workspaceNavigationParticipantListCss().getText());
    styleBuilder.append(resources.searchContainerCss().getText());
    styleBuilder.append(resources.statusPresenterCss().getText());
    styleBuilder.append(resources.noFileSelectedPanelCss().getText());
    styleBuilder.append(resources.diffRendererCss().getText());
    styleBuilder.append(resources.deltaInfoBarCss().getText());
    styleBuilder.append(resources.codePerspectiveCss().getText());
    styleBuilder.append(resources.unauthorizedUserCss().getText());
    styleBuilder.append(resources.syntaxHighlighterRendererCss().getText());
    styleBuilder.append(resources.lineNumberRendererCss().getText());
    styleBuilder.append(resources.uneditableDisplayCss().getText());
    styleBuilder.append(resources.editorSelectionLineRendererCss().getText());
    styleBuilder.append(resources.fileHistoryCss().getText());
    styleBuilder.append(resources.timelineCss().getText());
    styleBuilder.append(resources.timelineNodeCss().getText());
    styleBuilder.append(resources.popupCss().getText());
    styleBuilder.append(resources.tooltipCss().getText());
    styleBuilder.append(resources.sliderCss().getText());
    styleBuilder.append(resources.editableContentAreaCss().getText());
    styleBuilder.append(resources.workspaceLocationBreadcrumbsCss().getText());
    styleBuilder.append(resources.awesomeBoxCss().getText());
    styleBuilder.append(resources.awesomeBoxSectionCss().getText());
    styleBuilder.append(resources.centerPanelCss().getText());
    styleBuilder.append(resources.autocompleteComponentCss().getText());
    styleBuilder.append(resources.runButtonTargetPopupCss().getText());
    styleBuilder.append(resources.popupBlockedInstructionalPopupCss().getText());
    styleBuilder.append(resources.dropdownWidgetsCss().getText());
    styleBuilder.append(resources.parenMatchHighlighterCss().getText());
    styleBuilder.append(resources.awesomeBoxHostCss().getText());
    styleBuilder.append(resources.awesomeBoxComponentCss().getText());
    styleBuilder.append(resources.coachmarkCss().getText());
    styleBuilder.append(resources.sidebarListCss().getText());

    /*
     * workspaceNavigationSectionCss, animationController, and
     * resizeControllerCss must come last because they overwrite the CSS
     * properties from previous CSS rules.
     */
    styleBuilder.append(resources.workspaceNavigationSectionCss().getText());
    styleBuilder.append(resources.resizeControllerCss().getText());

    StyleInjector.inject(styleBuilder.toString());
    Elements.injectJs(CodeMirror2.getJs(resources));

    // Setup Places
    setUpPlaces(appContext);

    // Status Presenter
    StatusPresenter statusPresenter = StatusPresenter.create(appContext.getResources());
    Elements.getBody().appendChild(statusPresenter.getView().getElement());
    appContext.getStatusManager().setHandler(statusPresenter);

    // Replay History
    replayHistory(HistoryUtils.parseHistoryString());
  }

  @VisibleForTesting
  static void setUpPlaces(AppContext context) {
    RootPlace.PLACE.registerChildHandler(
        WorkspacePlace.PLACE, new WorkspacePlaceNavigationHandler(context), true);

    // Back/forward buttons or manual manipulation of the hash.
    HistoryUtils.addValueChangeListener(new ValueChangeListener() {
      @Override
      public void onValueChanged(String historyString) {
        replayHistory(HistoryUtils.parseHistoryString(historyString));
      }
    });
  }

  private static void replayHistory(JsonArray<NavigationToken> historyPieces) {

    // We don't want to snapshot history as we fire the Place events in the
    // replay.
    RootPlace.PLACE.disableHistorySnapshotting();
    RootPlace.PLACE.dispatchHistory(historyPieces);
    RootPlace.PLACE.enableHistorySnapshotting();
  }
}
TOP

Related Classes of com.google.collide.client.Collide

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.