Java tutorial
/******************************************************************************* * Copyright 2013 Ednovo d/b/a Gooru. All rights reserved. * * http://www.goorulearning.org/ * * 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. ******************************************************************************/ package org.ednovo.gooru.client.uc; import java.util.ArrayList; import java.util.List; import org.ednovo.gooru.client.PlaceTokens; import org.ednovo.gooru.client.SimpleAsyncCallback; import org.ednovo.gooru.client.gin.AppClientFactory; import org.ednovo.gooru.client.mvp.settings.UserSettingStyle; import org.ednovo.gooru.client.mvp.shelf.collection.CollectionCBundle; import org.ednovo.gooru.shared.model.content.CollectionDo; import org.ednovo.gooru.shared.model.user.ProfileDo; import com.google.gwt.dom.client.Style.Unit; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.client.ui.Label; /** * @author Search Team * */ public class ProfilePageGradeLabel extends Label implements ClickHandler { private static final List<String> gradeList = new ArrayList<String>(); private ProfileDo profileDo = null; private static final String KIDER_GARTEN = "Kindergarten"; @UiField UserSettingStyle Settings; private static final String HIGHER_EDUCATION = "Higher Education"; /** * Class constructor * @param label name of the {@link Label} * @param collectionDo instance of {@link CollectionDo} */ public ProfilePageGradeLabel(String label, ProfileDo profileDo) { super(label); String grades = profileDo.getGrade(); CollectionCBundle.INSTANCE.css().ensureInjected(); addDomHandler(this, ClickEvent.getType()); this.profileDo = profileDo; this.setStyleName("profileGradeList"); if (label.equals(KIDER_GARTEN)) { this.addStyleName(CollectionCBundle.INSTANCE.css().profileKinderGartenGrade()); if (AppClientFactory.getCurrentPlaceToken().equals(PlaceTokens.SETTINGS)) { this.getElement().getStyle().setMarginLeft(70, Unit.PX); this.getElement().getStyle().setMarginTop(30, Unit.PX); } } /*if(AppClientFactory.getCurrentPlaceToken().equals(PlaceTokens.SETTINGS)){ if(label.equals(KIDER_GARTEN)){ this.addStyleName(Settings.profileKinderGartenGrade()); } if(label.equals(HIGHER_EDUCATION)){ this.addStyleName(Settings.profileHigherEducationGrade()); } }*/ if (label.equals(HIGHER_EDUCATION)) { this.addStyleName(CollectionCBundle.INSTANCE.css().profileHigherEducationGrade()); if (AppClientFactory.getCurrentPlaceToken().equals(PlaceTokens.SETTINGS)) { this.getElement().getStyle().setMarginLeft(60, Unit.PX); this.getElement().getStyle().setMarginBottom(30, Unit.PX); } } if (grades != null) { String genGrade = grades; if (genGrade.indexOf("-") > 0) { genGrade = generateGrade(genGrade); } String grade[] = genGrade.split(","); for (int i = 0; i < grade.length; i++) { if (label.equals(grade[i])) { this.getElement().getStyle().setProperty("background", "#0F76BB"); this.getElement().getStyle().setColor("#fff"); this.getElement().setAttribute("selected", "selected"); if (!gradeList.contains(grade[i].toString())) { gradeList.add(grade[i].toString()); } } } } } @Override public void onClick(ClickEvent event) { if (this.getElement().getAttribute("selected").contains("selected")) { this.getElement().getStyle().setProperty("background", ""); if (AppClientFactory.getPlaceManager().getCurrentPlaceRequest().getNameToken() .equalsIgnoreCase(PlaceTokens.PROFILE_PAGE)) { this.getElement().getStyle().setColor("#000"); } else { this.getElement().getStyle().setColor("#999"); } this.getElement().removeAttribute("selected"); String gradeSelector = ""; for (String grade : gradeList) { if (grade.equals(this.getText())) { gradeSelector = grade; removeGrade(grade); } } gradeList.remove(gradeSelector); } else { this.getElement().getStyle().setProperty("background", "#0F76BB"); this.getElement().getStyle().setColor("#fff"); this.getElement().setAttribute("selected", "selected"); if (!gradeList.contains(this.getText())) { gradeList.add(this.getText()); updateGrade(this.getText()); } } } private void updateGrade(String grade) { String userLevel = AppClientFactory.getCurrentPlaceToken().toString(); if (userLevel.equalsIgnoreCase(PlaceTokens.SETTINGS)) { userLevel = "settings"; } else if (userLevel.equalsIgnoreCase(PlaceTokens.PROFILE_PAGE)) { userLevel = "profilePage"; } AppClientFactory.getInjector().getProfilePageService().addGradeUserProfile(grade, userLevel, new SimpleAsyncCallback<Void>() { @Override public void onSuccess(Void result) { } }); } private void removeGrade(String grade) { String userLevel = AppClientFactory.getCurrentPlaceToken().toString(); if (userLevel.equalsIgnoreCase(PlaceTokens.SETTINGS)) { userLevel = "settings"; } else if (userLevel.equalsIgnoreCase(PlaceTokens.PROFILE_PAGE)) { userLevel = "profilePage"; } AppClientFactory.getInjector().getProfilePageService().deleteGradeUserProfile(grade, userLevel, new SimpleAsyncCallback<Void>() { @Override public void onSuccess(Void result) { } }); } /*Unused Method * private String join(List<?> list,String separator){ StringBuilder builder =null; if(list != null){ builder = new StringBuilder(); for(Object value:list){ if(builder.length() > 0){ builder.append(separator); } builder.append(value); } } return builder.toString(); }*/ private String generateGrade(String gradeTxt) { String tmpGradeTxt = ""; if (gradeTxt.indexOf("-") > 0) { if (gradeTxt.indexOf(",") == -1) { tmpGradeTxt = generateGradeIfHypen(gradeTxt); } else { String gradeList[]; gradeList = gradeTxt.split(","); for (int k = 0; k < gradeList.length; k++) { if (gradeList[k].indexOf("-") > 0) { if (k == gradeList.length) { tmpGradeTxt = tmpGradeTxt + generateGradeIfHypen(gradeList[k]); } else { tmpGradeTxt = tmpGradeTxt + generateGradeIfHypen(gradeList[k]) + ","; } } else { if (k == gradeList.length - 1) { tmpGradeTxt = tmpGradeTxt + gradeList[k]; } else { tmpGradeTxt = tmpGradeTxt + gradeList[k] + ","; } } } } } return tmpGradeTxt; } private String generateGradeIfHypen(String grade) { String gradeList[]; StringBuilder gradeStr = new StringBuilder(); gradeList = grade.split("-"); if (gradeList.length >= 2) { int start = Integer.parseInt(gradeList[0].trim()); int end = Integer.parseInt(gradeList[1].trim()); if (start < end) { for (int i = start; i <= end; i++) { if (i == end) { gradeStr.append(i); } else { gradeStr.append(i).append(","); } } } } else { gradeStr.append(Integer.parseInt(gradeList[0])); } return gradeStr.toString(); } }