package comeon.ui.preferences.wikis; import com.google.inject.Inject; import com.google.inject.Singleton; import comeon.ui.preferences.SubController; import comeon.ui.preferences.main.PreferencesController; import java.beans.PropertyChangeEvent; @Singleton public final class WikiSubController extends SubController<WikiModel, WikiSubPanel> { @Inject public WikiSubController(final PreferencesController mainController) { super(mainController); } @Override protected void registerViewInterval(final WikiSubPanel view) { view.getNameField().getDocument().addDocumentListener(new AbstractDocumentListener() { @Override protected void doUpdate(final String text) { getModel().setName(text); } }); view.getUrlField().getDocument().addDocumentListener(new AbstractDocumentListener() { @Override protected void doUpdate(final String text) { getModel().setUrl(text); } }); view.getDisplayNameField().getDocument().addDocumentListener(new AbstractDocumentListener() { @Override protected void doUpdate(final String text) { getModel().setDisplayName(text); } }); view.getLoginField().getDocument().addDocumentListener(new AbstractDocumentListener() { @Override protected void doUpdate(final String text) { getModel().setLogin(text); } }); view.getPasswordField().getDocument().addDocumentListener(new AbstractDocumentListener() { @Override protected void doUpdate(final String text) { getModel().setPassword(text); } }); } @Override public void propertyChange(final PropertyChangeEvent evt) { // Noop } @Override protected void doCommit(final WikiModel source, final WikiModel target, final int index) { target.setName(source.getName()); target.setUrl(source.getUrl()); target.setDisplayName(source.getDisplayName()); target.setLogin(source.getLogin()); target.setPassword(source.getPassword()); getMainController().update(target, index); } @Override protected void onModelChangedInternal(final WikiModel oldModel, final WikiModel newModel) { getView().getNameField().setText(newModel.getName()); getView().getUrlField().setText(newModel.getUrl()); getView().getDisplayNameField().setText(newModel.getDisplayName()); getView().getLoginField().setText(newModel.getLogin()); getView().getPasswordField().setText(newModel.getPassword()); } @Override protected WikiModel makeNewModel() { return new WikiModel(); } @Override protected void addModel(final WikiModel model) { getMainController().add(model); } @Override public void remove(final int index) { getMainController().removeWiki(index); } }