// 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.workspace; import com.google.collide.client.history.Place; import com.google.collide.client.history.PlaceConstants; import com.google.collide.client.history.PlaceNavigationEvent; import com.google.collide.json.client.JsoStringMap; import com.google.collide.json.shared.JsonStringMap; /** * {@link Place} for arriving at the Workspace. */ public class WorkspacePlace extends Place { /** * The event that gets dispatched in order to arrive at the Workspace. * * @See {@link WorkspacePlaceNavigationHandler}. */ public class NavigationEvent extends PlaceNavigationEvent<WorkspacePlace> { private static final String NAV_EXPAND = "navEx"; private final boolean forceReload; private final boolean shouldNavExpand; private NavigationEvent(boolean shouldNavExpand, boolean forceReload) { super(WorkspacePlace.this); this.forceReload = forceReload; this.shouldNavExpand = shouldNavExpand; } @Override public JsonStringMap<String> getBookmarkableState() { JsoStringMap<String> state = JsoStringMap.create(); if (!shouldNavExpand) { state.put(NAV_EXPAND, String.valueOf(shouldNavExpand)); } return state; } public boolean shouldNavExpand() { return shouldNavExpand; } public boolean shouldForceReload() { return forceReload; } } public static final WorkspacePlace PLACE = new WorkspacePlace(); private WorkspacePlace() { super(PlaceConstants.WORKSPACE_PLACE_NAME); } @Override public PlaceNavigationEvent<WorkspacePlace> createNavigationEvent( JsonStringMap<String> decodedState) { String shouldNavExpandString = decodedState.get(NavigationEvent.NAV_EXPAND); boolean shouldNavExpand = shouldNavExpandString == null ? true : Boolean.parseBoolean(shouldNavExpandString); return createNavigationEvent(shouldNavExpand, false); } public PlaceNavigationEvent<WorkspacePlace> createNavigationEvent(boolean shouldNavExpand) { return createNavigationEvent(shouldNavExpand, false); } @Override public PlaceNavigationEvent<WorkspacePlace> createNavigationEvent() { return new NavigationEvent(true, false); } public PlaceNavigationEvent<WorkspacePlace> createNavigationEvent( boolean shouldNavExpand, boolean forceReload) { return new NavigationEvent(shouldNavExpand, forceReload); } }