// -*- mode: java; c-basic-offset: 2; -*-
// Copyright 2009-2011 Google, All Rights reserved
// Copyright 2011-2012 MIT, All rights reserved
// Released under the Apache License, Version 2.0
// http://www.apache.org/licenses/LICENSE-2.0

package com.google.appinventor.client.editor.simple.components;

import com.google.appinventor.client.editor.simple.SimpleEditor;
import com.google.appinventor.shared.rpc.project.ProjectNode;
import com.google.appinventor.components.common.ComponentConstants;
import com.google.gwt.user.client.ui.SimplePanel;

/**
 * Mock VideoPlayer component.
 *
 * @author [email protected] (Hal Abelson)
 * @author [email protected] (Liz Looney)
 */
public final class MockVideoPlayer extends MockVisibleComponent {

  /**
   * Component type name.
   */
  public static final String TYPE = "VideoPlayer";
  public static final String PROPERTY_NAME_SOURCE = "Source";

  // GWT panel widget used to mock a Simple VideoPlayer
  private final SimplePanel videoPlayerWidget;

  /**
   * Creates a new MockVideoPlayer component.
   *
   * @param editor  editor of source file the component belongs to
   */
  public MockVideoPlayer(SimpleEditor editor) {
    super(editor, TYPE, images.videoplayer());

    // Initialize mock video UI
    videoPlayerWidget = new SimplePanel();
    videoPlayerWidget.setStylePrimaryName("ode-SimpleMockComponent");
    videoPlayerWidget.setWidget(getIconImage());
    initComponent(videoPlayerWidget);
  }

  /**
   * Sets the videoPlayer's Source property to a new value.
   */
  private void setSourceProperty(String text) {
    // TODO:
    // we should do something here to set the correct size and
    // show an appropriate image in the designer
    //ProjectNode asset = getAssetNode(text);
  }

  @Override
  public int getPreferredWidth() {
    // The superclass uses getOffsetWidth, which won't work for us.
    return ComponentConstants.VIDEOPLAYER_PREFERRED_WIDTH;
  }

  @Override
  public int getPreferredHeight() {
    // The superclass uses getOffsetHeight, which won't work for us.
    return ComponentConstants.VIDEOPLAYER_PREFERRED_HEIGHT;
  }

  // PropertyChangeListener implementation

  @Override
  public void onPropertyChange(String propertyName, String newValue) {
    super.onPropertyChange(propertyName, newValue);

    // Apply changed properties to the mock component
    if (propertyName.equals(PROPERTY_NAME_SOURCE)) {
      setSourceProperty(newValue);
      // TODO(lizlooney) - If we ever add code to setSourceProperty to show an appropriate image,
      // we'll need to call refreshForm() here.
      //refreshForm();
    }
  }

  @Override
  protected boolean isPropertyVisible(String propertyName) {
    return super.isPropertyVisible(propertyName);
  }
}