/*******************************************************************************
* Copyright (c) 2007, 2014 compeople AG and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* compeople AG - initial API and implementation
*******************************************************************************/
package org.eclipse.riena.example.client.controllers;
import java.util.Collection;
import org.eclipse.riena.core.service.Service;
import org.eclipse.riena.example.client.views.SharedViewDemoSubModuleView;
import org.eclipse.riena.navigation.IApplicationNode;
import org.eclipse.riena.navigation.INavigationNode;
import org.eclipse.riena.navigation.ISubModuleNode;
import org.eclipse.riena.navigation.NavigationNodeId;
import org.eclipse.riena.navigation.NavigationNodeUtility;
import org.eclipse.riena.navigation.model.ModuleNode;
import org.eclipse.riena.navigation.model.SubModuleNode;
import org.eclipse.riena.navigation.ui.controllers.SubModuleController;
import org.eclipse.riena.ui.filter.IUIFilter;
import org.eclipse.riena.ui.filter.IUIFilterContainer;
import org.eclipse.riena.ui.filter.IUIFilterProvider;
import org.eclipse.riena.ui.ridgets.IActionListener;
import org.eclipse.riena.ui.ridgets.IActionRidget;
import org.eclipse.riena.ui.ridgets.ITextRidget;
import org.eclipse.riena.ui.ridgets.IToggleButtonRidget;
import org.eclipse.riena.ui.workarea.WorkareaManager;
/**
*
*/
public class FilterExampleSubModuleController extends SubModuleController {
public enum FilterId {
MENUITEM("rienaExample.menuToolBar"), //$NON-NLS-1$
NAVIGATION("rienaExample.navigation"), //$NON-NLS-1$
RIDGET("rienaExample.ridget"), //$NON-NLS-1$
RIDGET_01("rienaExample.ridget01"), //$NON-NLS-1$
RIDGET_HIDE("rienaExample.ridgetHide"), //$NON-NLS-1$
RIDGET_DISABLE("rienaExample.ridgetDisable"); //$NON-NLS-1$
private final String id;
FilterId(final String id) {
this.id = id;
}
/**
* @see java.lang.Enum#toString()
*/
@Override
public String toString() {
return id;
}
}
private final static String SELECTED_TEXT = "deactivate"; //$NON-NLS-1$
private final static String NOT_SELECTED_TEXT = "activate"; //$NON-NLS-1$
@Override
public void configureRidgets() {
super.configureRidgets();
final IToggleButtonRidget navigationAction = getRidget(IToggleButtonRidget.class, "navigationBtn"); //$NON-NLS-1$
updateToggleText(navigationAction);
navigationAction.addListener(new IActionListener() {
public void callback() {
doFilter(FilterId.NAVIGATION, "navigationBtn"); //$NON-NLS-1$
}
});
final IToggleButtonRidget menuToolAction = getRidget(IToggleButtonRidget.class, "menuToolItemBtn"); //$NON-NLS-1$
updateToggleText(menuToolAction);
menuToolAction.addListener(new IActionListener() {
public void callback() {
doFilter(FilterId.MENUITEM, "menuToolItemBtn"); //$NON-NLS-1$
}
});
final IToggleButtonRidget ridgetAction = getRidget(IToggleButtonRidget.class, "ridgetBtn"); //$NON-NLS-1$
updateToggleText(ridgetAction);
ridgetAction.addListener(new IActionListener() {
public void callback() {
doFilter(FilterId.RIDGET, "ridgetBtn"); //$NON-NLS-1$
}
});
final IToggleButtonRidget ridgetDisableAction = getRidget(IToggleButtonRidget.class, "ridgetDisableBtn"); //$NON-NLS-1$
updateToggleText(ridgetAction);
ridgetDisableAction.addListener(new IActionListener() {
public void callback() {
doFilter(FilterId.RIDGET_DISABLE, "ridgetDisableBtn"); //$NON-NLS-1$
}
});
final IToggleButtonRidget ridgetHideAction = getRidget(IToggleButtonRidget.class, "ridgetHideBtn"); //$NON-NLS-1$
updateToggleText(ridgetAction);
ridgetHideAction.addListener(new IActionListener() {
public void callback() {
doFilter(FilterId.RIDGET_HIDE, "ridgetHideBtn"); //$NON-NLS-1$
}
});
final IToggleButtonRidget ridget01Action = getRidget(IToggleButtonRidget.class, "ridget01Btn"); //$NON-NLS-1$
updateToggleText(ridgetAction);
ridget01Action.addListener(new IActionListener() {
public void callback() {
doFilter(FilterId.RIDGET_01, "ridget01Btn"); //$NON-NLS-1$
}
});
final MySampleBean sampleBean = new MySampleBean();
final ITextRidget sampleText = getRidget(ITextRidget.class, "sampleText"); //$NON-NLS-1$
sampleText.setMandatory(true);
sampleText.bindToModel(sampleBean, "text"); //$NON-NLS-1$
sampleText.updateFromModel();
final IActionRidget addFilteredNode = getRidget(IActionRidget.class, "addNode"); //$NON-NLS-1$
addFilteredNode.addListener(new IActionListener() {
public void callback() {
final ISubModuleNode sharedViewSm10 = new SubModuleNode(new NavigationNodeId("newx", "10" + System.currentTimeMillis()), "new x"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
WorkareaManager.getInstance().registerDefinition(sharedViewSm10, SharedViewDemoSubModuleController.class, SharedViewDemoSubModuleView.ID, true);
getNavigationNode().getParentOfType(ModuleNode.class).addChild(sharedViewSm10);
}
});
}
private void doFilter(final FilterId filterId, final String buttonRidgetId) {
final IToggleButtonRidget action = getRidget(IToggleButtonRidget.class, buttonRidgetId);
final IApplicationNode applNode = getNavigationNode().getParentOfType(IApplicationNode.class);
final IUIFilterContainer container = Service.get(IUIFilterProvider.class).provideFilter(filterId.toString());
final IUIFilter filter = container.getFilter();
final Collection<String> targetNodeIds = container.getFilterTargetNodeIds();
for (final String targetNodeId : targetNodeIds) {
final INavigationNode<?> node = NavigationNodeUtility.findNodesByLongId(targetNodeId, applNode).get(0);
if (action.isSelected()) {
node.addFilter(filter);
} else {
node.removeFilter(filter.getFilterID());
}
}
updateToggleText(action);
}
/**
* Updates the text of the given toggle button.
*
* @param toggle
* toggle button
*/
private void updateToggleText(final IToggleButtonRidget toggle) {
if (toggle.isSelected()) {
toggle.setText(SELECTED_TEXT);
} else {
toggle.setText(NOT_SELECTED_TEXT);
}
}
private static class MySampleBean {
private String text = ""; //$NON-NLS-1$
@SuppressWarnings("unused")
public void setText(final String text) {
this.text = text;
}
@SuppressWarnings("unused")
public String getText() {
return text;
}
}
}