package org.xcontest.xctrack.config;
import org.xcontest.xctrack.config.Config;
import org.xcontest.xctrack.util.Log;
import org.xcontest.xctrack.widget.Widget;
public class WidgetPosition {
public int col,row,ncols,nrows;
public Widget widget;
public Object[] settings;
public String save() {
String str = settings == null ? null : widget.saveSettings(settings);
if (str != null)
return Config.packStrings(new String[]{widget.getName(),""+col,""+row,""+ncols,""+nrows,str});
else
return Config.packStrings(new String[]{widget.getName(),""+col,""+row,""+ncols,""+nrows});
}
public static WidgetPosition load(String str) {
String[] arr = Config.unpackStrings(str);
if (arr == null || (arr.length != 5 && arr.length != 6)) {
Log.error("WidgetPosition.load() - unpackStrings failed");
return null;
}
WidgetPosition wp = new WidgetPosition();
wp.widget = Widget.getWidgetByName(arr[0]);
if (wp.widget == null) {
Log.error("WidgetPosition.load() - cannot find widget "+arr[0]);
return null;
}
wp.col = Integer.parseInt(arr[1]);
wp.row = Integer.parseInt(arr[2]);
wp.ncols = Integer.parseInt(arr[3]);
wp.nrows = Integer.parseInt(arr[4]);
if (wp.ncols == 0 || wp.nrows == 0) {
Log.error("WidgetPosition.load() - invalid widget size");
return null;
}
wp.settings = wp.widget.loadSettings(arr.length == 6 ? arr[5] : null);
return wp;
}
}