/** * Create a new NotificationChannel. * * @param channelName name of the channel * @param channel text area for showing the event log * @param blackList if <code>true</code>, the channel will default to showing everything that has * not been explicitly blacklisted. Otherwise it'll show only whitelisted content. The main * channel should default to blacklisting, as it should show types that have been added in new * game versions * @param defaultTypes default value of the saved notification type list (white- or blacklist * depending on the value of <code>showUnknown</code>) */ NotificationChannel( String channelName, KTextEdit channel, boolean blackList, String defaultTypes) { name = channelName; this.channel = channel; if (blackList) { eventTypes = EnumSet.allOf(NotificationType.class); } else { eventTypes = EnumSet.noneOf(NotificationType.class); } // Load WtWindowManager wm = WtWindowManager.getInstance(); String value = wm.getProperty("ui.channel." + name, defaultTypes); for (String typeString : value.split(",")) { /* * String.split is unfortunately unable to return empty arrays when * applied on empty string. Work around it. */ if ("".equals(typeString)) { continue; } try { NotificationType type = NotificationType.valueOf(typeString); setTypeFiltering(type, !blackList); } catch (RuntimeException e) { logger.error("Unrecognized notification type '" + typeString + "'", e); } } }
/** * Creates a new text event. * * @param type NotificationType * @param text Text */ public PrivateTextEvent(final NotificationType type, final String text) { super(Events.PRIVATE_TEXT); put(TEXT_TYPE, type.name()); put(TEXT, text); }