// -*- 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.settings.SettingsConstants;

import com.google.gwt.user.client.ui.Image;
import com.google.gwt.user.client.ui.SimplePanel;

import java.util.ArrayList;

import com.google.appinventor.client.output.OdeLog;

/**
 * Mock WebViewer component.
 *
 * @author [email protected] (Hal Abelson)
 */
public final class MockWebViewer extends MockVisibleComponent {

  /**
   * Component type name.
   */
  public static final String TYPE = "WebViewer";

  // Property names that we need to treat specially
  private static final String PROPERTY_NAME_USESLOCATION = "UsesLocation";

  // Large icon image for use in designer.  Smaller version is in the palette.
  private final Image largeImage = new Image(images.webviewerbig());

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

    // Initialize mock WebViewer UI
    SimplePanel webViewerWidget = new SimplePanel();
    webViewerWidget.setStylePrimaryName("ode-SimpleMockContainer");
    // TODO(halabelson): Center vertically as well as horizontally
    webViewerWidget.addStyleDependentName("centerContents");
    webViewerWidget.setWidget(largeImage);
    initComponent(webViewerWidget);
  }

  // If these are not here, then we don't see the icon as it's
  // being dragged from the pelette
  @Override
  public int getPreferredWidth() {
    return largeImage.getWidth();
  }

  @Override
  public int getPreferredHeight() {
    return largeImage.getHeight();
  }


  // override the width and height hints, so that automatic will in fact be fill-parent
  @Override
  int getWidthHint() {
    int widthHint = super.getWidthHint();
    if (widthHint == LENGTH_PREFERRED) {
      widthHint = LENGTH_FILL_PARENT;
    }
    return widthHint;
  }

  @Override int getHeightHint() {
    int heightHint = super.getHeightHint();
    if (heightHint == LENGTH_PREFERRED) {
      heightHint = LENGTH_FILL_PARENT;
    }
    return heightHint;
  }

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

    if (propertyName.equals(PROPERTY_NAME_USESLOCATION)) {
      editor.getProjectEditor().recordLocationSetting(this.getName(), newValue);
    }

  }
}