import mx.controls.Button;
import mx.controls.Alert;
import mx.controls.ProgressBar;
import mx.controls.TextArea;
import mx.controls.Label;
import mx.controls.ComboBox;
import mx.controls.List;
import mx.controls.Loader;
import mx.controls.DataGrid;
import mx.data.components.DataSet;
import mx.data.components.XMLConnector;
import mx.data.components.datasetclasses.DataSetError;
import mx.data.to.ValueListIterator;
import mx.utils.Delegate;
class MainForm extends mx.screens.Form {
public var type_con:XMLConnector;
public var immoByType_con:XMLConnector;
private var urlImmoByType:String;
public var type_cb:ComboBox;
public var immo_li:List;
public var prestation_ds:DataSet;
public var items_dg:DataGrid;
// pour image
public var image_ds:DataSet;
public var imageLoader:Loader;
public var imageProgress:ProgressBar;
public var imageLabel:Label;
public var zoomImageButton:MovieClip;
private var dataLoaded:Boolean = false;
// Constructor
public function MainForm() {}
// ----- -----
public function init():Void {
super.init();
addEventListener("reveal", onReveal);
}
// ----- -----
public function onLoad(obj:Object):Void {
dataLoaded = false;
setVisible(false);
// --
type_con.addEventListener("status",this);
type_con.addEventListener("result",this);
immoByType_con.addEventListener("status",this);
immoByType_con.addEventListener("result",Delegate.create(this, doResultPrestation));
prestation_ds.addEventListener("iteratorScrolled",Delegate.create(this, doChangePrestation));
// On force une mise a jour interface
prestation_ds.addEventListener("afterLoaded",Delegate.create(this, doAfterLoadedPrestation));
// --
type_cb.addEventListener("change", Delegate.create(this, doChangeType));
// ---
initStyleGrid(items_dg);
initColumnGrid(items_dg);
items_dg.addEventListener("cellPress", Delegate.create(this, doCellPress));
// --
imageLoader.addEventListener("complete", Delegate.create(this, doImageOnComplete));
zoomImageButton.onRelease = zoomImageOnRelease; // -------------------------------------------------------si je met rollover cela marche (le 1er)
zoomImageButton.owner = this;
// -- pour image
//imageLoader.visible = false;
imageProgress.visible = false;
}
// ----- -----
public function onReveal(obj:Object):Void {
// Save URL
if (urlImmoByType == undefined) {
urlImmoByType = immoByType_con.URL;
}
if (!dataLoaded) {
getImmoType();
}
}
// ----- -----
public function getImmoType():Void {
rootForm.enableProgress(true, "Chargement...");
type_con.trigger();
}
// ----- -----
public function doChangeType(evt:Object):Void {
//
var index = evt.target.selectedIndex;
var idType = evt.target.selectedItem.data;
getPrestationByType(idType);
}
public function getPrestationByType(value:Number):Void {
rootForm.enableProgress(true, "Recherche...");
var newURL = urlImmoByType + "?it=" + value;
immoByType_con.URL = newURL;
immoByType_con.trigger();
}
// ----- Resultats sur XMLConnector -----
public function status(stat:Object):Void {
// Erreur sur code PHP
if (stat.code != "StatusChange") {
var error = "Erreur de l'application : " + stat.target._name + "/" + stat.code + "/" + stat.data.faultcode + "/" + stat.data.faultstring;
rootForm.enableProgress(false);
rootForm.setStatusMessage("<error>Impossible de se connecter au serveur.</error>");
errorConnector(error);
return;
}
}
private function errorConnector(message:String):Void {
var alertWindow:Alert = Alert.show( message,
"Erreur de l'application ",
Alert.OK, this);
alertWindow.startDragging = function() {};
rootForm.setLocationRelativeTo(alertWindow, null);
}
// -- --
public function result():Void {
rootForm.enableProgress(false);
dataLoaded = true;
// Force selection premier element
type_cb.selectedIndex = 1;
type_cb.dispatchEvent({type:"change"});
}
public function doResultPrestation():Void {
//trace(" doResultPrestation ");
rootForm.enableProgress(false);
}
// ----- -----
public function doAfterLoadedPrestation(eventObj:Object):Void {
var dataset = prestation_ds;
var len = dataset.length;
if (len == 0) {
imageLoader.visible = false;
imageProgress.visible = false;
} else {
imageLoader.visible = true;
imageProgress.visible = true;
}
doBuildDataGrid();
doChangePrestation(eventObj);
}
public function doChangePrestation(eventObj:Object):Void {
var dataset = eventObj.target;
var selectedIndex = dataset.selectedIndex;
var currentItem = dataset.currentItem;
// Pour le futur
//trace(" doChangePrestation ="+selectedIndex+" image="+currentItem.image);
}
// ----- -----
public function doBuildDataGrid():Void {
var dataset = prestation_ds;
var len = dataset.length;
var myDP:Array = new Array();
var maxRow = Math.ceil(len/3);
var preCode = prestation_ds.currentItem.label;
for (var i=0; i<maxRow; i++) {
// on passe le dataset pour pouvoir l'accèder dans cellPress
var myData = {item0:0, item1:0, item2:0, dataset:prestation_ds };
for (var j = 0; j < 3; j++) {
var indice = (i*3)+j;
if (indice < len) {
myData["item"+j] = preCode+""+i+":"+j;
}
else {
myData["item"+j] = "";
}
}
myDP.addItem(myData);
}
items_dg.dataProvider = myDP;
if (len != 0) {
items_dg.selectedIndex = 0;
items_dg.dispatchEvent({type:"change"});
}
}
// ----- -----
public function zoomImageOnRelease():Void {
// Warning : getURL a ce niveau ne fonctionne pas ???
var owner = this["owner"];
owner.zoomImage();
}
public function zoomImage():Void {
var dataset = prestation_ds;
var currentItem = dataset.currentItem;
var URL:String;
URL = rootForm.siteURL + currentItem.zoom;
if (currentItem != undefined) {
getURL(URL,"_blank");
}
}
// ----- -----
public function doImageOnComplete(eventObj:Object):Void {
//trace(" doImageOnComplete ");
imageProgress.visible = false;
}
// ----- -----
public function initStyleGrid(datagrid:DataGrid):Void {
datagrid.setRowHeight(54);
datagrid.setStyle("hGridLines", false);
datagrid.setStyle("vGridLines", false);
datagrid.setStyle("useRollOver", false);
datagrid.setStyle("selectionColor", 0xFFFFFF);
datagrid.showHeaders = false;
datagrid.setStyle("borderStyle", "none");
datagrid.vScrollPolicy = "auto";
}
// ----- -----
public function initColumnGrid(datagrid:DataGrid):Void {
var newColumn:mx.controls.gridclasses.DataGridColumn;
datagrid.editable = false;
datagrid.multipleSelection = false;
datagrid.removeAllColumns();
var totalWidth:Number = 0;
newColumn = new mx.controls.gridclasses.DataGridColumn("item0");
newColumn.headerText = "item0";
newColumn.editable = false;
newColumn.resizable = true;
newColumn.sortable = false;
newColumn.width = 54;
newColumn.cellRenderer = "PrestationRenderer";
datagrid.addColumn(newColumn);
totalWidth += newColumn.width;
newColumn = new mx.controls.gridclasses.DataGridColumn("item1");
newColumn.headerText = "item1";
newColumn.editable = false;
newColumn.resizable = true;
newColumn.sortable = false;
newColumn.width = 54;
newColumn.cellRenderer = "PrestationRenderer";
datagrid.addColumn(newColumn);
totalWidth += newColumn.width;
newColumn = new mx.controls.gridclasses.DataGridColumn("item2");
newColumn.headerText = "item2";
newColumn.editable = false;
newColumn.resizable = true;
newColumn.sortable = false;
newColumn.width = 54;
newColumn.cellRenderer = "PrestationRenderer";
datagrid.addColumn(newColumn);
totalWidth += newColumn.width;
}
// ----- -----
public function doCellPress(eventObj:Object):Void {
var datagrid = eventObj.target;
var currentItem = datagrid.selectedItem;
var dataset = currentItem.dataset;
// On retrouve indice dans premier dataset
// et on selectionne cet indice
var ligne = eventObj.itemIndex;
var colonne = eventObj.columnIndex;
var selectedIndex = (ligne*3)+colonne;
dataset.selectedIndex = selectedIndex;
}
// ----- -----
// replaces the from string to to string and returns the modified
function replaceString(mainStr:String, findStr:String, replaceStr:String):String {
return (mainStr.split(findStr).join(replaceStr));
}
}
toma, eso es mi codigo y si alguien puede "help me"
(pardomane soy frances

)
Yaya