package ${project_package};
import griffon.core.artifact.GriffonView;
import griffon.inject.MVCMember;
import griffon.metadata.ArtifactProviderFor;
import org.codehaus.griffon.runtime.swing.artifact.AbstractSwingGriffonView;
import javax.swing.*;
import java.awt.GridLayout;
import java.awt.Image;
import java.awt.Toolkit;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.util.Collections;
import javax.annotation.Nonnull;
import static java.util.Arrays.asList;
import static javax.swing.WindowConstants.DO_NOTHING_ON_CLOSE;
@ArtifactProviderFor(GriffonView.class)
public class ${project_class_name}View extends AbstractSwingGriffonView {
private ${project_class_name}Model model;
private ${project_class_name}Controller controller;
@MVCMember
public void setModel(@Nonnull ${project_class_name}Model model) {
this.model = model;
}
@MVCMember
public void setController(@Nonnull ${project_class_name}Controller controller) {
this.controller = controller;
}
@Override
public void initUI() {
JFrame window = (JFrame) getApplication()
.createApplicationContainer(Collections.<String,Object>emptyMap());
window.setName("mainWindow");
window.setTitle(getApplication().getConfiguration().getAsString("application.title"));
window.setSize(320, 120);
window.setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
window.setIconImage(getImage("/griffon-icon-48x48.png"));
window.setIconImages(asList(
getImage("/griffon-icon-48x48.png"),
getImage("/griffon-icon-32x32.png"),
getImage("/griffon-icon-16x16.png")
));
getApplication().getWindowManager().attach("mainWindow", window);
window.getContentPane().setLayout(new GridLayout(2, 1));
final JLabel clickLabel = new JLabel(String.valueOf(model.getClickCount()));
clickLabel.setName("clickLabel");
clickLabel.setHorizontalAlignment(SwingConstants.CENTER);
model.addPropertyChangeListener("clickCount", new PropertyChangeListener() {
@Override
public void propertyChange(PropertyChangeEvent evt) {
clickLabel.setText(String.valueOf(evt.getNewValue()));
}
});
window.getContentPane().add(clickLabel);
Action action = toolkitActionFor(controller, "click");
JButton button = new JButton(action);
button.setName("clickButton");
window.getContentPane().add(button);
}
private Image getImage(String path) {
return Toolkit.getDefaultToolkit().getImage(${project_class_name}View.class.getResource(path));
}
}