package com.uwsoft.editor.view.ui.properties.panels; import com.badlogic.ashley.core.Entity; import com.commons.MsgAPI; import com.puremvc.patterns.observer.Notification; import com.uwsoft.editor.Overlap2DFacade; import com.uwsoft.editor.proxy.FontManager; import com.uwsoft.editor.renderer.components.label.LabelComponent; import com.uwsoft.editor.renderer.utils.ComponentRetriever; import com.uwsoft.editor.view.ui.properties.UIItemPropertiesMediator; import org.apache.commons.lang3.ArrayUtils; /** * Created by avetiszakharyan on 4/24/15. */ public class UILabelItemPropertiesMediator extends UIItemPropertiesMediator<Entity, UILabelItemProperties> { private static final String TAG = UILabelItemPropertiesMediator.class.getCanonicalName(); public static final String NAME = TAG; private String prevText = null; private FontManager fontManager; public UILabelItemPropertiesMediator() { super(NAME, new UILabelItemProperties()); } @Override public String[] listNotificationInterests() { final String[] parentInterests = super.listNotificationInterests(); return ArrayUtils.add(parentInterests, UILabelItemProperties.LABEL_TEXT_CHAR_TYPED); } @Override public void handleNotification(Notification notification) { super.handleNotification(notification); if(notification.getName().equals(UILabelItemProperties.LABEL_TEXT_CHAR_TYPED)) { onTextChange(); } } private void onTextChange() { LabelComponent labelComponent = ComponentRetriever.get(observableReference, LabelComponent.class); labelComponent.setText(viewComponent.getText()); } @Override public void onRegister() { facade = Overlap2DFacade.getInstance(); fontManager = facade.retrieveProxy(FontManager.NAME); lockUpdates = true; viewComponent.setFontFamilyList(fontManager.getFontNamesFromMap()); lockUpdates = false; } @Override protected void translateObservableDataToView(Entity item) { LabelComponent labelComponent = ComponentRetriever.get(item, LabelComponent.class); viewComponent.setFontFamily(labelComponent.fontName); viewComponent.setFontSize(labelComponent.fontSize); viewComponent.setAlignValue(labelComponent.labelAlign); viewComponent.setText(labelComponent.text.toString()); if(prevText == null) this.prevText = viewComponent.getText(); } @Override protected void translateViewToItemData() { final String newText = viewComponent.getText(); Object[] payload = new Object[6]; payload[0] = observableReference; payload[1] = viewComponent.getFontFamily(); payload[2] = viewComponent.getFontSize(); payload[3] = viewComponent.getAlignValue(); payload[4] = newText; payload[5] = prevText; sendNotification(MsgAPI.ACTION_UPDATE_LABEL_DATA, payload); this.prevText = newText; } @Override protected void afterItemDataModified() { } }