/* * * Copyright (C) 2007-2013 Licensed to the Comunes Association (CA) under * one or more contributor license agreements (see COPYRIGHT for details). * The CA licenses this file to you under the GNU Affero General Public * License version 3, (the "License"); you may not use this file except in * compliance with the License. This file is part of kune. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. * */ package cc.kune.polymer.client; import static cc.kune.polymer.client.Layout.*; import com.google.gwt.core.client.JsArrayString; import com.google.gwt.dom.client.Element; import com.google.gwt.user.client.Timer; import com.google.gwt.user.client.ui.Widget; public class PolymerUtils { private static Timer hideInboxTimer = new Timer() { @Override public void run() { PolymerUtils.setMainSelected(); PolymerUtils.setNarrowVisible(false); } }; private static Timer hideSNTimer = new Timer() { @Override public void run() { PolymerUtils.hideSN(); PolymerUtils.setSNWidth("80%"); } }; /* private static PaperFab inboxShowHide; */ public static void addFlexHorLayout(final Widget... widgets) { addFlexLayout(HORIZONTAL, widgets); } private static void addFlexLayout(final Layout horOVert, final Widget... widgets) { for (final Widget widget : widgets) { addLayout(widget.getElement(), horOVert, LAYOUT, FLEX); } } public static void addFlexVerLayout(final Widget... widgets) { addFlexLayout(VERTICAL, widgets); } public static void addLayout(final Element element, final Layout... layouts) { for (final Layout layout : layouts) { element.addClassName(layout.getAttribute()); // element.setAttribute(layout.getAttribute(), ""); } } public static void addLayout(final Widget widget, final Layout... layouts) { addLayout(widget.getElement(), layouts); } public native static String getMainSelected() /*-{ return $wnd.kt.main_selected; }-*/; public native static String getSNSelected() /*-{ return $wnd.kt.group_header_selected; }-*/; public static void hideInboxCancel() { hideInboxTimer.cancel(); } public static void hideSNWithDelay(int delay) { hideSNTimer.schedule(delay); } public static void hideInboxWithDelay() { hideInboxTimer.schedule(PolymerUtils.isMainDrawerNarrow() ? 0 : 4000); } public native static void showSN() /*-{ $wnd.kt.group_header_selected = "drawer"; }-*/; public native static void hideSN() /*-{ $wnd.kt.group_header_selected = "main"; }-*/; public native static void hideSpinner() /*-{ $wnd.kt.hideSpinner(); }-*/; public static boolean isGroupHeaderMainSelected() { return getSNSelected().equals("main"); } public native static boolean isMainDrawerNarrow() /*-{ return $wnd.kt.main_narrow; }-*/; public static boolean isMainSelected() { return getMainSelected().equals("main"); } public native static boolean isXSmall() /*-{ return $wnd.kt.xsmall; }-*/; public static void removeLayout(final Element element, final Layout... layouts) { for (final Layout layout : layouts) { element.removeClassName(layout.getAttribute()); // element.removeAttribute(layout.getAttribute()); } } public native static void setBackImage(final String url) /*-{ $wnd.kt.group_back_image_url = url; }-*/; /** * Shows/select the "inbox" drawer. */ public static void setDrawerSelected() { setMainSelected("drawer"); } /** * Shows/select the "main" panel. */ public static void setMainSelected() { setMainSelected("main"); } private native static void setMainSelected(String selected) /*-{ $wnd.kt.main_selected = selected; }-*/; public static void setNarrowSwipeEnabled(final boolean enabled) { setNarrowSwipeEnabledImpl(enabled); /* if (inboxShowHide == null) { inboxShowHide = PaperFab.wrap(PolymerId.INBOX_SHOW_HIDE.getId()); } inboxShowHide.setEnabled(enabled); */ } private native static void setNarrowSwipeEnabledImpl(final boolean enabled) /*-{ $wnd.kt.main_disableEdgeSwipe = !enabled; $wnd.kt.main_disableSwipe = !enabled; }-*/; public static void setNarrowVisible(final boolean visible) { setNarrowVisibleImpl(visible); } private native static void setNarrowVisibleImpl(final boolean visible) /*-{ $wnd.kt.main_forcenarrow = !visible; }-*/; public native static void setSitebarUserIconImage(final String url) /*-{ $wnd.kt.user_icon_back_image_url = url; }-*/; public native static void setSNWidth(final String width) /*-{ $wnd.kt.group_header_drawer_width = width; }-*/; private native static void setTheme(JsArrayString c, JsArrayString bg) /*-{ $wnd.kt.c1 = c[0]; $wnd.kt.bg1 = bg[0]; $wnd.kt.c2 = c[1]; $wnd.kt.bg2 = bg[1]; $wnd.kt.c3 = c[2]; $wnd.kt.bg3 = bg[2]; $wnd.kt.c4 = c[3]; $wnd.kt.bg4 = bg[3]; $wnd.kt.c5 = c[4]; $wnd.kt.bg5 = bg[4]; $wnd.kt.c6 = c[5]; $wnd.kt.bg6 = bg[5]; $wnd.kt.c7 = c[6]; $wnd.kt.bg7 = bg[6]; $wnd.kt.c8 = c[7]; $wnd.kt.bg8 = bg[7]; }-*/; public static void setTheme(final String c[], final String bg[]) { setTheme(toJsArray(c), toJsArray(bg)); } public native static void showSpinner() /*-{ $wnd.kt.showSpinner(); }-*/; public native static void toggleSearch() /*-{ $wnd.kt.toggleSearch(); }-*/; /** * https://stackoverflow.com/questions/22167486/gwt-how-to-pass-java-array- * into-javascript-native-method */ private static JsArrayString toJsArray(final String[] input) { final JsArrayString jsArrayString = JsArrayString.createArray().cast(); for (final String s : input) { jsArrayString.push(s); } return jsArrayString; } }