package com.data2semantics.yasgui.client.helpers;
/*
* #%L
* YASGUI
* %%
* Copyright (C) 2013 Laurens Rietveld
* %%
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
* #L%
*/
import com.data2semantics.yasgui.client.View;
import com.data2semantics.yasgui.client.configmenu.AutocompletionsConfigWindow;
import com.data2semantics.yasgui.client.configmenu.OfflineAvailabilityConfig;
import com.data2semantics.yasgui.client.settings.ExternalLinks;
import com.data2semantics.yasgui.client.tab.optionbar.endpoints.EndpointInput;
import com.google.gwt.json.client.JSONParser;
import com.google.gwt.json.client.JSONValue;
public class CallableJsMethods {
private View view;
public CallableJsMethods(View view) {
this.view = view;
declareCallableViewMethods(this);
}
public void cancelQuery() {
view.getElements().cancelQuery();
}
public void storeSettings() {
LocalStorageHelper.storeSettings(view.getSettings());
}
public void setQueryType(String queryType) {
view.getSelectedTab().setQueryType(queryType);
}
public void adjustQueryInputForContent() {
view.getSelectedTab().getQueryTextArea().adjustForContent(true);
}
public void adjustBookmarkQueryInputForContent(int height) {
view.getSelectedTab().getBookmarkedQueries().adjustQueryInputForContent(height);
}
/**
* Get query string from text area, set it in settings, and store in cookie
*/
public void storeQueryInCookie() {
String query = view.getSelectedTab().getQueryTextArea().getQuery();
view.getSelectedTabSettings().setQueryString(query);
LocalStorageHelper.storeSettings(view.getSettings());
}
/**
* detect which query is open (not collapsed), and store it.
*/
public void updateBookmarkedQuery() {
view.getSelectedTab().getBookmarkedQueries().storeCurrentTextArea();
}
public boolean isOnline() {
return view.getConnHelper().isOnline();
}
public void checkIsOnline() {
view.getConnHelper().checkOnlineStatus();
}
public void onError(String error) {
view.getErrorHelper().onError(error);
}
public void onError(Throwable e) {
view.getErrorHelper().onError(e);
}
public void onLoadingStart(String message) {
Helper.onLoadingStart(message);
}
public void onLoadingFinish() {
Helper.onLoadingFinish();
}
public void executeQuery() {
SparqlQuery.exec(view);
}
public void showPlayButton(String queryValid) {
view.getElements().showPlayButton(queryValid);
}
public void saveTabTitle() {
view.getTabs().saveTabTitle();
}
public void historyStateChangeCallback() {
view.getHistory().onHistoryStateChange();
}
public void queryForResource(String resource) {
view.getSelectedTab().getQueryTextArea().queryForResource(resource);
}
public boolean endpointSelectionEnabled() {
return view.getEnabledFeatures().endpointSelectionEnabled();
}
public String getCurrentEndpoint() {
EndpointInput endpointInput = view.getSelectedTab().getEndpointInput();
if (endpointInput != null) {
endpointInput.storeEndpointInSettings();
}
return view.getSelectedTabSettings().getEndpoint();
}
public boolean inDebugMode() {
return Helper.inDebugMode();
}
public void showOfflineAvailabilitySettings() {
new OfflineAvailabilityConfig(view);
}
public void clearQueryResultsFromSettings() {
view.getSettings().clearQueryResults();
LocalStorageHelper.storeSettings(view.getSettings());
}
public void sendQueryAnalyticsEvent(String endpoint, String queryString, String label, int timing) {
if (view.getSettings().useGoogleAnalytics()) {
GoogleAnalyticsEvent queryEvent = new GoogleAnalyticsEvent(endpoint, JsMethods.getUncommentedSparql(queryString), label, timing);
GoogleAnalytics.trackEvent(queryEvent);
}
}
public String getPropertyCompletionMethods() {
return view.getSettings().getPropertyCompletionMethodsAsJson().toString();
}
public String getClassCompletionMethods() {
return view.getSettings().getClassCompletionMethodsAsJson().toString();
}
public String getAutocompletionMoreInfoLink() {
return ExternalLinks.YASGUI_AUTOCOMPLETE_INFO;
}
public String getLovApiLink() {
return ExternalLinks.LOV_API;
}
public void storeCompletionMethodsInSettings(String methodsJsonString, String type) {
JSONValue jsonVal = JSONParser.parseStrict(methodsJsonString);
if (jsonVal != null && jsonVal.isObject() != null) {
if (type.equals("property")) {
view.getSettings().setPropertyCompletionMethods(jsonVal.isObject());
} else if (type.equals("class")) {
view.getSettings().setClassCompletionMethods(jsonVal.isObject());
}
LocalStorageHelper.storeSettings(view.getSettings());
}
}
public boolean isColdAutocompletionFetch(String endpoint, String type) {
boolean cold = false;
if (view.getAutocompletionsInfo() != null) {
cold = view.getAutocompletionsInfo().coldAutocompletionFetch(endpoint, type);
}
return cold;
}
public boolean retryAllowed(String endpoint, String type) {
boolean retryAllowed = true;
if (view.getAutocompletionsInfo() != null) {
retryAllowed = view.getAutocompletionsInfo().retryFetchAllowed(endpoint, type);
}
return retryAllowed;
}
public void logAutocompletionsInfo() {
if (view.getAutocompletionsInfo() == null) {
JsMethods.logConsole("null");
} else {
JsMethods.logConsole(view.getAutocompletionsInfo().toString());
}
}
public void fetchAutocompletionsInfo() {
view.retrieveAutocompletionsInfo();
}
public boolean isDbSet() {
return view.getSettings().isDbSet();
}
public void setUriFetcherNotificationShown() {
LocalStorageHelper.setUriFetcherNotificationShown();
}
public String getLoginStack() {
return LocalStorageHelper.getLoginStack();
}
public void setLoginStack(String jsonArray) {
LocalStorageHelper.setLoginStack(jsonArray);
}
public void addToLoginStack(String cmd) {
Helper.addToLoginStack(cmd);
}
public void login() {
if (view.getSettings().isDbSet() && view.getOpenId() != null && !view.getOpenId().isLoggedIn()) {
view.getOpenId().showOpenIdProviders();
}
}
public void drawAutocompletionConfig() {
new AutocompletionsConfigWindow(view);
}
/**
* Add view methods to JS, use this for situations where a non-static GWT method needs to be called
*
* @param view
*/
public static native void declareCallableViewMethods(CallableJsMethods viewJs) /*-{
var view = view;
$wnd.onError = function(errorMsg) {
viewJs.@com.data2semantics.yasgui.client.helpers.CallableJsMethods::onError(Ljava/lang/String;)(errorMsg);
}
$wnd.onLoadingStart = function(message) {
viewJs.@com.data2semantics.yasgui.client.helpers.CallableJsMethods::onLoadingStart(Ljava/lang/String;)(message);
}
$wnd.onLoadingFinish = function() {
viewJs.@com.data2semantics.yasgui.client.helpers.CallableJsMethods::onLoadingFinish()();
}
$wnd.storeQueryInCookie = function() {
viewJs.@com.data2semantics.yasgui.client.helpers.CallableJsMethods::storeQueryInCookie()();
}
$wnd.updateBookmarkedQuery = function() {
viewJs.@com.data2semantics.yasgui.client.helpers.CallableJsMethods::updateBookmarkedQuery()();
}
$wnd.showPlayButton = function(queryValid) {
viewJs.@com.data2semantics.yasgui.client.helpers.CallableJsMethods::showPlayButton(Ljava/lang/String;)(queryValid);
}
$wnd.adjustQueryInputForContent = function() {
viewJs.@com.data2semantics.yasgui.client.helpers.CallableJsMethods::adjustQueryInputForContent()();
}
$wnd.adjustBookmarkQueryInputForContent = function(height) {
viewJs.@com.data2semantics.yasgui.client.helpers.CallableJsMethods::adjustBookmarkQueryInputForContent(I)(height);
}
$wnd.setQueryType = function(queryType) {
viewJs.@com.data2semantics.yasgui.client.helpers.CallableJsMethods::setQueryType(Ljava/lang/String;)(queryType);
}
$wnd.queryForResource = function(resource) {
viewJs.@com.data2semantics.yasgui.client.helpers.CallableJsMethods::queryForResource(Ljava/lang/String;)(resource);
}
$wnd.storeSettings = function() {
viewJs.@com.data2semantics.yasgui.client.helpers.CallableJsMethods::storeSettings()();
}
$wnd.cancelQuery = function() {
viewJs.@com.data2semantics.yasgui.client.helpers.CallableJsMethods::cancelQuery()();
}
$wnd.executeQuery = function() {
viewJs.@com.data2semantics.yasgui.client.helpers.CallableJsMethods::executeQuery()();
}
$wnd.saveTabTitle = function() {
viewJs.@com.data2semantics.yasgui.client.helpers.CallableJsMethods::saveTabTitle()();
}
$wnd.historyStateChangeCallback = function() {
viewJs.@com.data2semantics.yasgui.client.helpers.CallableJsMethods::historyStateChangeCallback()();
}
$wnd.endpointSelectionEnabled = function() {
return viewJs.@com.data2semantics.yasgui.client.helpers.CallableJsMethods::endpointSelectionEnabled()();
}
$wnd.getCurrentEndpoint = function() {
return viewJs.@com.data2semantics.yasgui.client.helpers.CallableJsMethods::getCurrentEndpoint()();
}
$wnd.inDebugMode = function() {
return viewJs.@com.data2semantics.yasgui.client.helpers.CallableJsMethods::inDebugMode()();
}
$wnd.isOnline = function() {
return viewJs.@com.data2semantics.yasgui.client.helpers.CallableJsMethods::isOnline()();
}
$wnd.checkIsOnline = function() {
viewJs.@com.data2semantics.yasgui.client.helpers.CallableJsMethods::checkIsOnline()();
}
$wnd.showOfflineAvailabilitySettings = function() {
viewJs.@com.data2semantics.yasgui.client.helpers.CallableJsMethods::showOfflineAvailabilitySettings()();
}
$wnd.clearQueryResultsFromSettings = function() {
viewJs.@com.data2semantics.yasgui.client.helpers.CallableJsMethods::clearQueryResultsFromSettings()();
}
$wnd.sendQueryAnalyticsEvent = function(endpoint, queryString, label, timing) {
viewJs.@com.data2semantics.yasgui.client.helpers.CallableJsMethods::sendQueryAnalyticsEvent(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)(endpoint, queryString, label, timing);
}
$wnd.getPropertyCompletionMethods = function() {
var settingsString = viewJs.@com.data2semantics.yasgui.client.helpers.CallableJsMethods::getPropertyCompletionMethods()();
return $wnd.jQuery.parseJSON(settingsString);
}
$wnd.getClassCompletionMethods = function() {
var settingsString = viewJs.@com.data2semantics.yasgui.client.helpers.CallableJsMethods::getClassCompletionMethods()();
return $wnd.jQuery.parseJSON(settingsString);
}
$wnd.getAutocompletionMoreInfoLink = function() {
return viewJs.@com.data2semantics.yasgui.client.helpers.CallableJsMethods::getAutocompletionMoreInfoLink()();
}
$wnd.getLovApiLink = function() {
return viewJs.@com.data2semantics.yasgui.client.helpers.CallableJsMethods::getLovApiLink()();
}
$wnd.storeCompletionMethodsInSettings = function(methods, type) {
viewJs.@com.data2semantics.yasgui.client.helpers.CallableJsMethods::storeCompletionMethodsInSettings(Ljava/lang/String;Ljava/lang/String;)(methods, type);
}
$wnd.coldAutocompletionFetch = function(endpoint, type) {
return viewJs.@com.data2semantics.yasgui.client.helpers.CallableJsMethods::isColdAutocompletionFetch(Ljava/lang/String;Ljava/lang/String;)(endpoint, type);
}
$wnd.retryAllowed = function(endpoint, type) {
return viewJs.@com.data2semantics.yasgui.client.helpers.CallableJsMethods::retryAllowed(Ljava/lang/String;Ljava/lang/String;)(endpoint, type);
}
$wnd.logAutocompletionsInfo = function() {
return viewJs.@com.data2semantics.yasgui.client.helpers.CallableJsMethods::logAutocompletionsInfo()();
}
$wnd.fetchAutocompletionsInfo = function() {
viewJs.@com.data2semantics.yasgui.client.helpers.CallableJsMethods::fetchAutocompletionsInfo()();
}
$wnd.isDbSet = function() {
return viewJs.@com.data2semantics.yasgui.client.helpers.CallableJsMethods::isDbSet()();
}
$wnd.setUriFetcherNotificationShown = function() {
viewJs.@com.data2semantics.yasgui.client.helpers.CallableJsMethods::setUriFetcherNotificationShown()();
}
$wnd.getLoginStack = function() {
return viewJs.@com.data2semantics.yasgui.client.helpers.CallableJsMethods::getLoginStack()();
}
$wnd.setLoginStack = function(jsonArray) {
viewJs.@com.data2semantics.yasgui.client.helpers.CallableJsMethods::setLoginStack(Ljava/lang/String;)(jsonArray);
}
$wnd.addToLoginStack = function(cmd) {
viewJs.@com.data2semantics.yasgui.client.helpers.CallableJsMethods::addToLoginStack(Ljava/lang/String;)(cmd);
}
$wnd.login = function() {
viewJs.@com.data2semantics.yasgui.client.helpers.CallableJsMethods::login()();
}
$wnd.drawAutocompletionConfig = function() {
viewJs.@com.data2semantics.yasgui.client.helpers.CallableJsMethods::drawAutocompletionConfig()();
}
}-*/;
}