All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.talk2object.plum.lib.viewbuilder.GenericSingleMethodInteractionViewBuilder Maven / Gradle / Ivy

package com.talk2object.plum.lib.viewbuilder;

import com.talk2object.plum.interaction.AbstractSingleMethodInteraction;
import com.talk2object.plum.interaction.annotation.View;
import com.talk2object.plum.interaction.application.PlumApplicationContextUtils;
import com.talk2object.plum.interaction.generic.DialogInteraction;
import com.talk2object.plum.interaction.interaction.ActionBuilder;
import com.talk2object.plum.interaction.interaction.SortedActions;
import com.talk2object.plum.interaction.model.Application;
import com.talk2object.plum.interaction.rich.field.ViewMode;
import com.talk2object.plum.view._abstract.components.AppView;
import com.talk2object.plum.view.component.Button;
import com.talk2object.plum.view.component.ClickEventListener;
import com.talk2object.plum.view.component.Component;
import com.talk2object.plum.view.component.containers.window.MainWindow;
import com.talk2object.plum.view.component.menu.MenuBar;
import com.talk2object.plum.viewgeneration.AbstractSimpleViewBuilder;
import com.talk2object.plum.viewgeneration.BuilderMatchPolicy;
import com.talk2object.plum.viewgeneration.ViewBuildContext;
import com.talk2object.plum.viewgeneration.ViewClass;
import com.talk2object.plum.viewgeneration.ViewDetail;
import com.talk2object.plum.viewgeneration.ViewFactory;

/**
 * This is a view builder for any model which has {@link View} annotation.
 * 
 * @author jack
 *
 */
public class GenericSingleMethodInteractionViewBuilder extends
		AbstractSimpleViewBuilder {

	@Override
	public Component build(Object model, ViewBuildContext context) {

		MainWindow view = null;
		final AbstractSingleMethodInteraction interaction = (AbstractSingleMethodInteraction) model;
		try {
			view = new AppView();
			view.setModel(model);

			String name = interaction.getMethod().getName();
			view.setTitle(name);

			Button btn = new Button();
			btn.setCaption(name);
			btn.addClickListener(new ClickEventListener() {
				@Override
				public void onClick(Component source) {
					interaction.start();
				}
			});

			view.getBodyPanel().addChild(btn);
			view.getFootPanel().hide();

		} catch (Exception e) {
			throw new RuntimeException(e);
		}
		// req.getSession().setAttribute(SESSION_KEY_VIEW, view);
		return view;
	}

	@Override
	public Class getModelClass() {

		return DialogInteraction.class;
	}

	@Override
	public Class getViewClass() {

		return AppView.class;
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy