use of io.jmix.ui.component.Window in project jmix by jmix-framework.
the class FilterDelegateImpl method setFilterEntity.
/**
* Sets filter entity, creates condition editor components and applies filter if necessary
*/
@Override
public void setFilterEntity(FilterEntity filterEntity) {
this.filterEntity = filterEntity;
conditions = filterParser.getConditions(filter, filterEntity.getXml());
prevConditions = conditions;
initialConditions = conditions.toConditionsList();
for (AbstractCondition condition : initialConditions) {
if (!suitableCondition(condition)) {
String message = String.format(getMainMessage("filter.inappropriate.filter"), filterEntity.getName(), adapter.getMetaClass().getName());
getNotifications().create(Notifications.NotificationType.HUMANIZED).withCaption(message).show();
setFilterEntity(adHocFilter);
break;
}
condition.addListener(new AbstractCondition.Listener() {
@Override
public void captionChanged() {
}
@Override
public void paramChanged(Param oldParam, Param newParam) {
updateFilterModifiedIndicator();
}
});
}
// If there are window parameters named as filter parameters, assign values to the corresponding
// filter params. Together with passing a filter code in 'filter' window parameter it allows to open an
// arbitrary filter with parameters regardless of a user defined default filter.
Window window = getWindow();
for (AbstractCondition condition : conditions.toConditionsList()) {
if (condition.getParam() != null) {
for (Map.Entry<String, Object> entry : window.getContext().getParams().entrySet()) {
if (entry.getKey().equals(condition.getParam().getName()))
condition.getParam().parseValue((String) entry.getValue());
}
}
}
saveInitialFilterState();
if (filtersLookupDisplayed) {
filtersLookupListenerEnabled = false;
filtersLookup.setValue(filterEntity);
filtersLookupListenerEnabled = true;
}
setFilterActionsEnabled();
setFilterActionsVisible();
fillConditionsLayout(ConditionsFocusType.FIRST);
if (delayedFocus) {
delayedFocus = false;
requestFocus();
} else {
requestFocusToParamEditComponent();
}
setConditionsLayoutVisible(true);
if (BooleanUtils.isTrue(filterEntity.getIsSet()) || (filterEntity.getFolder() != null && BooleanUtils.isNotFalse(filterEntity.getApplyDefault()))) {
apply(true);
}
updateWindowCaption();
for (Filter.FilterEntityChangeListener listener : filterEntityChangeListeners) {
listener.filterEntityChanged(filterEntity);
}
}
use of io.jmix.ui.component.Window in project jmix by jmix-framework.
the class FilterDelegateImpl method updateWindowCaption.
protected void updateWindowCaption() {
Window window = getWindow();
String filterTitle;
if (filterMode == FilterMode.GENERIC_MODE && filterEntity != null && filterEntity != adHocFilter) {
filterTitle = getFilterCaption(filterEntity);
} else {
filterTitle = null;
}
if (windowCaptionUpdateEnabled) {
if (initialWindowCaption == null) {
initialWindowCaption = window.getCaption();
}
getWindowManager().setWindowCaption(window, initialWindowCaption, filterTitle);
}
String newCaption = Strings.isNullOrEmpty(filterTitle) ? caption : caption + ": " + filterTitle;
captionChangedListener.accept(newCaption);
}
use of io.jmix.ui.component.Window in project jmix by jmix-framework.
the class CubaComponentsHelper method getFilterComponentPath.
public static String getFilterComponentPath(Filter filter) {
StringBuilder sb = new StringBuilder(filter.getId() != null ? filter.getId() : "filterWithoutId");
Frame frame = filter.getFrame();
while (frame != null) {
sb.insert(0, ".");
String s = frame.getId() != null ? frame.getId() : "frameWithoutId";
if (s.contains(".")) {
s = "[" + s + "]";
}
sb.insert(0, s);
if (frame instanceof Window) {
break;
}
frame = frame.getFrame();
}
return sb.toString();
}
use of io.jmix.ui.component.Window in project jmix by jmix-framework.
the class CubaFoldersPane method setupUpdateTimer.
protected void setupUpdateTimer() {
if (cubaProperties.isFoldersPaneEnabled()) {
int period = cubaProperties.getAppFoldersRefreshPeriodSec() * 1000;
timer = new FoldersPaneTimer();
timer.setRepeating(true);
timer.setDelay(period);
timer.addActionListener(createAppFolderUpdater());
timer.start();
if (this.isAttached()) {
AppUI ui = AppUI.getCurrent();
stopExistingFoldersPaneTimer(ui);
ui.addTimer(timer);
} else if (frame != null) {
Window window = CubaComponentsHelper.getWindowImplementation(frame);
if (window == null) {
throw new IllegalStateException("Null window for CubaFoldersPane");
}
AbstractComponent topLevelFrame = window.unwrapComposition(AbstractComponent.class);
timer.extend(topLevelFrame);
}
}
}
use of io.jmix.ui.component.Window in project jmix by jmix-framework.
the class WebAccordion method onSelectedTabChangeListener.
@Override
protected void onSelectedTabChangeListener(TabSheet.SelectedTabChangeEvent event) {
super.onSelectedTabChangeListener(event);
Window window = ComponentsHelper.getWindow(WebAccordion.this);
if (window != null) {
if (window.getFrameOwner() instanceof LegacyFrame) {
DsContext dsContext = ((LegacyFrame) window.getFrameOwner()).getDsContext();
if (dsContext != null) {
((DsContextImplementation) dsContext).resumeSuspended();
}
}
} else {
LoggerFactory.getLogger(AccordionImpl.class).warn("Please specify Frame for Accordion");
}
}
Aggregations