/*
* Copyright 2016 Red Hat, Inc. and/or its affiliates.
*
* 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 org.uberfire.ext.security.management.client.widgets.management.editor.acl;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.enterprise.context.Dependent;
import javax.inject.Inject;
import com.google.gwt.user.client.ui.IsWidget;
import com.google.gwt.user.client.ui.Widget;
import org.uberfire.ext.security.management.client.resources.i18n.UsersManagementWidgetsConstants;
import org.uberfire.ext.widgets.common.client.dropdown.LiveSearchDropDown;
import org.uberfire.mvp.Command;
@Dependent
public class PriorityDropDown implements IsWidget {
LiveSearchDropDown liveSearchDropDown;
List<String> priorityItemList;
@Inject
public PriorityDropDown(LiveSearchDropDown liveSearchDropDown) {
this.liveSearchDropDown = liveSearchDropDown;
this.priorityItemList = new ArrayList<>();
}
@PostConstruct
private void init() {
priorityItemList.add(UsersManagementWidgetsConstants.INSTANCE.priorityVeryHigh());
priorityItemList.add(UsersManagementWidgetsConstants.INSTANCE.priorityHigh());
priorityItemList.add(UsersManagementWidgetsConstants.INSTANCE.priorityNormal());
priorityItemList.add(UsersManagementWidgetsConstants.INSTANCE.priorityLow());
priorityItemList.add(UsersManagementWidgetsConstants.INSTANCE.priorityVeryLow());
liveSearchDropDown.setSelectorHint(UsersManagementWidgetsConstants.INSTANCE.selectPriorityHint());
liveSearchDropDown.setSearchEnabled(false);
liveSearchDropDown.setSearchService((pattern, maxResults, callback) -> callback.afterSearch(priorityItemList));
}
@Override
public Widget asWidget() {
return liveSearchDropDown.asWidget();
}
public String getPriorityName(int priority) {
Priority p = resolvePriority(priority);
int idx = p.getIndex();
return priorityItemList.get(idx);
}
public int getSelectedPriority() {
String selected = liveSearchDropDown.getSelectedItem();
if (selected == null) {
return -1;
}
int idx = priorityItemList.indexOf(selected);
return Priority.get(idx).getOrdinal();
}
public void setSelectedPriority(int ordinal) {
Priority priority = resolvePriority(ordinal);
String item = priorityItemList.get(priority.getIndex());
liveSearchDropDown.setSelectedItem(item);
}
public void setWidth(int minWidth) {
liveSearchDropDown.setWidth(minWidth);
}
public void setOnChange(Command onChange) {
liveSearchDropDown.setOnChange(onChange);
}
public void clear() {
liveSearchDropDown.clear();
}
public Priority resolvePriority(int priority) {
if (priority < -5) {
return Priority.VERY_LOW;
}
if (priority < 0) {
return Priority.LOW;
}
if (priority == 0) {
return Priority.NORMAL;
}
if (priority <= 5) {
return Priority.HIGH;
}
return Priority.VERY_HIGH;
}
private enum Priority {
VERY_HIGH(10),
HIGH(5),
NORMAL(0),
LOW(-5),
VERY_LOW(-10);
private static Priority[] _typeArray = values();
int ordinal = 0;
Priority(int ordinal) {
this.ordinal = ordinal;
}
public static Priority get(int idx) {
return _typeArray[idx];
}
public int getOrdinal() {
return ordinal;
}
public int getIndex() {
for (int i = 0; i < _typeArray.length; i++) {
Priority item = _typeArray[i];
if (this.equals(item)) {
return i;
}
}
return -1;
}
}
}