/*
* Copyright (c) 2005 (Mike) Maurice Kienenberger (mkienenb@gmail.com)
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
package org.gamenet.application.mm8leveleditor.dataSectionable;
import java.awt.Component;
import java.awt.FlowLayout;
import java.util.Iterator;
import java.util.List;
import javax.swing.BoxLayout;
import javax.swing.JLabel;
import javax.swing.JPanel;
import org.gamenet.application.mm8leveleditor.control.ChestContentsControl;
import org.gamenet.application.mm8leveleditor.control.CreatureControl;
import org.gamenet.application.mm8leveleditor.control.DateTimeControl;
import org.gamenet.application.mm8leveleditor.control.ItemControl;
import org.gamenet.application.mm8leveleditor.control.MapNoteControl;
import org.gamenet.application.mm8leveleditor.data.mm6.ChestContents;
import org.gamenet.application.mm8leveleditor.data.mm6.Creature;
import org.gamenet.application.mm8leveleditor.data.mm6.Item;
import org.gamenet.application.mm8leveleditor.data.mm6.MapNote;
import org.gamenet.application.mm8leveleditor.data.mm6.outdoor.DeltaOutdoorDataMap;
import org.gamenet.swing.controls.ByteDataTableControl;
import org.gamenet.swing.controls.ByteTextFieldArrayControl;
import org.gamenet.swing.controls.ComparativeTableControl;
import org.gamenet.swing.controls.DataSection;
import org.gamenet.swing.controls.DataSectionable;
import org.gamenet.swing.controls.IntTextField;
import org.gamenet.swing.controls.IntTextFieldArrayControl;
import org.gamenet.swing.controls.IntValueHolder;
import org.gamenet.swing.controls.LongValueHolder;
import org.gamenet.swing.controls.PixelMapDataSource;
import org.gamenet.swing.controls.ShortTextFieldArrayControl;
import org.gamenet.swing.controls.StringTextField;
import org.gamenet.swing.controls.StringValueHolder;
import org.gamenet.swing.controls.SwatchPanel;
import org.gamenet.util.TaskObserver;
public class DeltaOutdoorDataMapDataSectionable extends BaseDataSectionable implements DataSectionable
{
private DeltaOutdoorDataMap deltaOutdoorDataMap = null;
public DeltaOutdoorDataMapDataSectionable(DeltaOutdoorDataMap srcDeltaOutdoorDataMap)
{
super();
this.deltaOutdoorDataMap = srcDeltaOutdoorDataMap;
}
protected Component getVisibleMapPanel1(TaskObserver taskObserver) throws InterruptedException
{
return getVisibleMapPanel(taskObserver, deltaOutdoorDataMap.getVisibleMapData1());
}
protected Component getVisibleMapPanel2(TaskObserver taskObserver) throws InterruptedException
{
return getVisibleMapPanel(taskObserver, deltaOutdoorDataMap.getVisibleMapData2());
}
protected Component getVisibleMapPanel(TaskObserver taskObserver, final byte visibleMapData1[][]) throws InterruptedException
{
taskObserver.taskProgress("Visible Map", 0.1f);
if (Thread.currentThread().isInterrupted())
throw new InterruptedException("getVisibleMapPanel() was interrupted.");
PixelMapDataSource visiblePixelMapDataSource = new PixelMapDataSource()
{
public int getValueAt(int row, int column)
{
int byteColumn = column / 8;
int byteValue = visibleMapData1[row][byteColumn];
int bitColumn = column % 8;
int value = byteValue & (1 << (7 - bitColumn));
if (0 != value) value = 255;
return value;
}
public int getRowCount()
{
return DeltaOutdoorDataMap.VISIBLE_MAP_HEIGHT;
}
public int getColumnCount()
{
return DeltaOutdoorDataMap.VISIBLE_MAP_WIDTH * DeltaOutdoorDataMap.VISIBLE_MAP_PIXELS_PER_BYTE;
}
};
JPanel visibleMapDataPanel = makeNonStretchedPanelFor(new SwatchPanel(visiblePixelMapDataSource, 0, 4, false));
return visibleMapDataPanel;
}
protected Component getGeneralPanel(TaskObserver taskObserver) throws InterruptedException
{
taskObserver.taskProgress("General", 0.1f);
if (Thread.currentThread().isInterrupted())
throw new InterruptedException("getGeneralPanel() was interrupted.");
JPanel generalDataPanel = new JPanel();
generalDataPanel.setLayout(new BoxLayout(generalDataPanel, BoxLayout.Y_AXIS));
JPanel mapResetCountPanel = makeNonStretchedPanelFor(new JLabel("Map Reset Count"));
generalDataPanel.add(mapResetCountPanel);
mapResetCountPanel.add(new IntTextField(new IntValueHolder() {
public int getValue() { return deltaOutdoorDataMap.getMapResetCount(); }
public void setValue(int value) { deltaOutdoorDataMap.setMapResetCount(value); }
}));
JPanel lastResetDayPanel = makeNonStretchedPanelFor(new JLabel("Last Reset Day"));
generalDataPanel.add(lastResetDayPanel);
lastResetDayPanel.add(new IntTextField(new IntValueHolder() {
public int getValue() { return deltaOutdoorDataMap.getLastResetDay(); }
public void setValue(int value) { deltaOutdoorDataMap.setLastResetDay(value); }
}));
JPanel stealingDifficultyAdjustmentPanel = makeNonStretchedPanelFor(new JLabel("Stealing Difficulty Adjustment"));
generalDataPanel.add(stealingDifficultyAdjustmentPanel);
stealingDifficultyAdjustmentPanel.add(new IntTextField(new IntValueHolder() {
public int getValue() { return deltaOutdoorDataMap.getStealingDifficultyAdjustment(); }
public void setValue(int value) { deltaOutdoorDataMap.setStealingDifficultyAdjustment(value); }
}));
JPanel mapAlertStatusPanel = makeNonStretchedPanelFor(new JLabel("Map Alert Status"));
generalDataPanel.add(mapAlertStatusPanel);
mapAlertStatusPanel.add(new IntTextField(new IntValueHolder() {
public int getValue() { return deltaOutdoorDataMap.getMapAlertStatus(); }
public void setValue(int value) { deltaOutdoorDataMap.setMapAlertStatus(value); }
}));
JPanel facetsInD3ObjectsCountPanel = makeNonStretchedPanelFor(new JLabel("Total Number Of Facets In D3Objects"));
generalDataPanel.add(facetsInD3ObjectsCountPanel);
facetsInD3ObjectsCountPanel.add(new IntTextField(new IntValueHolder() {
public int getValue() { return deltaOutdoorDataMap.getTotalNumberOfFacetsInD3Objects(); }
public void setValue(int value) { deltaOutdoorDataMap.setTotalNumberOfFacetsInD3Objects(value); }
}));
JPanel spriteCountPanel = makeNonStretchedPanelFor(new JLabel("Total Number Of Sprites"));
generalDataPanel.add(spriteCountPanel);
spriteCountPanel.add(new IntTextField(new IntValueHolder() {
public int getValue() { return deltaOutdoorDataMap.getTotalNumberOfSprites(); }
public void setValue(int value) { deltaOutdoorDataMap.setTotalNumberOfSprites(value); }
}));
JPanel d3ObjectCountPanel = makeNonStretchedPanelFor(new JLabel("Total Number Of D3Objects"));
generalDataPanel.add(d3ObjectCountPanel);
d3ObjectCountPanel.add(new IntTextField(new IntValueHolder() {
public int getValue() { return deltaOutdoorDataMap.getTotalNumberOfD3Objects(); }
public void setValue(int value) { deltaOutdoorDataMap.setTotalNumberOfD3Objects(value); }
}));
JPanel mapNotesPanel = makeNonStretchedPanelFor(new JLabel("Map Notes Offset"));
generalDataPanel.add(mapNotesPanel);
mapNotesPanel.add(new IntTextField(new IntValueHolder() {
public int getValue() { return deltaOutdoorDataMap.getMapNotesOffset(); }
public void setValue(int value) { deltaOutdoorDataMap.setMapNotesOffset(value); }
}));
JPanel reserved1Panel = makeNonStretchedPanelFor(new JLabel("Reserved1"));
generalDataPanel.add(reserved1Panel);
reserved1Panel.add(new IntTextField(new IntValueHolder() {
public int getValue() { return deltaOutdoorDataMap.getReserved1(); }
public void setValue(int value) { deltaOutdoorDataMap.setReserved1(value); }
}));
JPanel reserved2Panel = makeNonStretchedPanelFor(new JLabel("Reserved2"));
generalDataPanel.add(reserved2Panel);
reserved2Panel.add(new IntTextField(new IntValueHolder() {
public int getValue() { return deltaOutdoorDataMap.getReserved2(); }
public void setValue(int value) { deltaOutdoorDataMap.setReserved2(value); }
}));
JPanel dayAttributePanel = makeNonStretchedPanelFor(new JLabel("Day Attribute"));
generalDataPanel.add(dayAttributePanel);
dayAttributePanel.add(new IntTextField(new IntValueHolder() {
public int getValue() { return deltaOutdoorDataMap.getDayAttribute(); }
public void setValue(int value) { deltaOutdoorDataMap.setDayAttribute(value); }
}));
JPanel fogRange1Panel = makeNonStretchedPanelFor(new JLabel("Fog Range 1"));
generalDataPanel.add(fogRange1Panel);
fogRange1Panel.add(new IntTextField(new IntValueHolder() {
public int getValue() { return deltaOutdoorDataMap.getFogRange1(); }
public void setValue(int value) { deltaOutdoorDataMap.setFogRange1(value); }
}));
JPanel fogRange2Panel = makeNonStretchedPanelFor(new JLabel("Fog Range 2"));
generalDataPanel.add(fogRange2Panel);
fogRange2Panel.add(new IntTextField(new IntValueHolder() {
public int getValue() { return deltaOutdoorDataMap.getFogRange2(); }
public void setValue(int value) { deltaOutdoorDataMap.setFogRange2(value); }
}));
JPanel attributesPanel = makeNonStretchedPanelFor(new JLabel("Attributes"));
generalDataPanel.add(attributesPanel);
attributesPanel.add(new IntTextField(new IntValueHolder() {
public int getValue() { return deltaOutdoorDataMap.getAttributes(); }
public void setValue(int value) { deltaOutdoorDataMap.setAttributes(value); }
}));
JPanel ceilingPanel = makeNonStretchedPanelFor(new JLabel("Ceiling"));
generalDataPanel.add(ceilingPanel);
ceilingPanel.add(new IntTextField(new IntValueHolder() {
public int getValue() { return deltaOutdoorDataMap.getCeiling(); }
public void setValue(int value) { deltaOutdoorDataMap.setCeiling(value); }
}));
JPanel lastTimeVisitedPanel = makeNonStretchedPanelFor(new JLabel("Last Visited Time"));
generalDataPanel.add(lastTimeVisitedPanel);
lastTimeVisitedPanel.add(new DateTimeControl(new LongValueHolder() {
public long getValue() { return deltaOutdoorDataMap.getLastVisitedTime(); }
public void setValue(long value) { deltaOutdoorDataMap.setLastVisitedTime(value); }
}));
JPanel skyBitmapNamePanel = makeNonStretchedPanelFor(new JLabel("Sky Bitmap Name"));
generalDataPanel.add(skyBitmapNamePanel);
skyBitmapNamePanel.add(new StringTextField(new StringValueHolder() {
public String getValue() { return deltaOutdoorDataMap.getSkyBitmapName(); }
public void setValue(String value) { deltaOutdoorDataMap.setSkyBitmapName(value); }
public int getMaxLength() { return deltaOutdoorDataMap.getSkyBitmapNameMaxLength(); }
}));
JPanel activeMapNoteCountPanel = makeNonStretchedPanelFor(new JLabel("active MapNote Count"));
generalDataPanel.add(activeMapNoteCountPanel);
activeMapNoteCountPanel.add(new IntTextField(new IntValueHolder() {
public int getValue() { return deltaOutdoorDataMap.getActiveMapNoteCount(); }
public void setValue(int value) { deltaOutdoorDataMap.setActiveMapNoteCount(value); }
}));
return generalDataPanel;
}
public Component getMapBitsPanel(TaskObserver taskObserver) throws InterruptedException
{
taskObserver.taskProgress("Map bits", 0.1f);
if (Thread.currentThread().isInterrupted())
throw new InterruptedException("getMapBitsPanel() was interrupted.");
JPanel mapBitsPanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
ByteTextFieldArrayControl mapBitControl = new ByteTextFieldArrayControl(deltaOutdoorDataMap.getMapBits(), "MapBit");
mapBitsPanel.add(mapBitControl);
return mapBitsPanel;
}
public Component getFacetAttributesPanel(TaskObserver taskObserver) throws InterruptedException
{
taskObserver.taskProgress("Facet Attributes", 0.1f);
if (Thread.currentThread().isInterrupted())
throw new InterruptedException("getFacetAttributesPanel() was interrupted.");
JPanel facetAttributesPanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
IntTextFieldArrayControl facetAttributesControl = new IntTextFieldArrayControl(deltaOutdoorDataMap.getFacetAttributeArray(), "Facet Attributes");
facetAttributesPanel.add(facetAttributesControl);
return facetAttributesPanel;
}
public Component getSpriteAttributesPanel(TaskObserver taskObserver) throws InterruptedException
{
taskObserver.taskProgress("Sprite Attributes", 0.1f);
if (Thread.currentThread().isInterrupted())
throw new InterruptedException("getSpriteAttributesPanel() was interrupted.");
JPanel spriteAttributesPanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
ShortTextFieldArrayControl spriteAttributesControl = new ShortTextFieldArrayControl(deltaOutdoorDataMap.getSpriteAttributeArray(), "Sprite Attributes");
spriteAttributesPanel.add(spriteAttributesControl);
return spriteAttributesPanel;
}
protected Component getRemainingDataPanel(TaskObserver taskObserver) throws InterruptedException
{
taskObserver.taskProgress("Remaining Data", 0.1f);
if (Thread.currentThread().isInterrupted())
throw new InterruptedException("getRemainingDataPanel() was interrupted.");
JPanel remainingDataPanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
byte remainingData[] = deltaOutdoorDataMap.getRemainingData();
ByteDataTableControl remainingDataBDTC = new ByteDataTableControl(remainingData, 32, deltaOutdoorDataMap.getRemainingDataOffset());
remainingDataPanel.add(makeNonStretchedPanelFor(remainingDataBDTC));
return remainingDataPanel;
}
public Object getData()
{
return deltaOutdoorDataMap;
}
private Creature createNewCreature()
{
String creatureName = "";
Creature newCreature = new Creature(deltaOutdoorDataMap.getGameVersion(), creatureName);
return newCreature;
}
private Item createNewItem()
{
int itemId = 0;
int itemNumber = 0;
int pictureNumber = 0;
int x = 0;
int y = 0;
int z = 0;
int stdMagicClass = 0;
int stdMagicBonus = 0;
int amountOfGold = 0;
int charges = 0;
Item newItem = new Item(deltaOutdoorDataMap.getGameVersion(), itemNumber, pictureNumber, x, y, z, stdMagicClass, stdMagicBonus, amountOfGold, charges);
return newItem;
}
private ChestContents createNewChestContents()
{
int openedStatus = ChestContents.OPENED_STATUS_UNOPENED_UNTRAPPED_UNPLACED;
ChestContents newChestContents = new ChestContents(deltaOutdoorDataMap.getGameVersion(), openedStatus);
return newChestContents;
}
private MapNote createNewMapNote()
{
short id = 0;
boolean active = false;
short x = 0;
short y = 0;
String text = "";
MapNote newMapNote = new MapNote(id, active, x, y, text);
return newMapNote;
}
public static final String DATA_SECTION_UNKNOWN0 = "General";
public static final String DATA_SECTION_VISIBLE_MAP_1 = "Visible map 1";
public static final String DATA_SECTION_VISIBLE_MAP_2 = "Visible map 2";
public static final String DATA_SECTION_FACET_ATTRIBUTES = "Facet Attributes";
public static final String DATA_SECTION_SPRITE_ATTRIBUTES = "Sprite Attributes";
public static final String DATA_SECTION_CREATURES = "Creatures";
public static final String DATA_SECTION_ITEMS = "Items";
public static final String DATA_SECTION_CHEST_CONTENTS = "Chest Contents";
public static final String DATA_SECTION_MAP_BITS = "Map bits";
public static final String DATA_SECTION_REMAINING_DATA = "Remaining Data";
public static final String DATA_SECTION_MAP_NOTES = "Map Notes";
public static DataSection[] getDataSections()
{
return new DataSection[] {
new DataSection(DATA_SECTION_UNKNOWN0),
new DataSection(DATA_SECTION_VISIBLE_MAP_1),
new DataSection(DATA_SECTION_VISIBLE_MAP_2),
new DataSection(DATA_SECTION_FACET_ATTRIBUTES),
new DataSection(DATA_SECTION_SPRITE_ATTRIBUTES),
new DataSection(DATA_SECTION_CREATURES, Creature.class, CreatureDataSectionable.class),
new DataSection(DATA_SECTION_ITEMS, Item.class, ItemDataSectionable.class),
new DataSection(DATA_SECTION_CHEST_CONTENTS, ChestContents.class, ChestContentsDataSectionable.class),
new DataSection(DATA_SECTION_MAP_BITS),
new DataSection(DATA_SECTION_REMAINING_DATA),
new DataSection(DATA_SECTION_MAP_NOTES, MapNote.class, MapNoteDataSectionable.class)
};
}
public DataSection[] getStaticDataSections() { return getDataSections(); }
public Object getDataForDataSection(DataSection dataSection)
{
String dataSectionName = dataSection.getDataSectionName();
if (dataSectionName == DATA_SECTION_UNKNOWN0)
{
return null;
// IMPLEMENT: return deltaOutdoorDataMap.getGeneral();
}
else if (dataSectionName == DATA_SECTION_VISIBLE_MAP_1) { return deltaOutdoorDataMap.getVisibleMapData1(); }
else if (dataSectionName == DATA_SECTION_VISIBLE_MAP_2) { return deltaOutdoorDataMap.getVisibleMapData2(); }
else if (dataSectionName == DATA_SECTION_FACET_ATTRIBUTES) { return deltaOutdoorDataMap.getFacetAttributeArray(); }
else if (dataSectionName == DATA_SECTION_SPRITE_ATTRIBUTES) { return deltaOutdoorDataMap.getSpriteAttributeArray(); }
else if (dataSectionName == DATA_SECTION_CREATURES) { return deltaOutdoorDataMap.getCreatureList(); }
else if (dataSectionName == DATA_SECTION_ITEMS) { return deltaOutdoorDataMap.getItemList(); }
else if (dataSectionName == DATA_SECTION_CHEST_CONTENTS) { return deltaOutdoorDataMap.getChestContentsList(); }
else if (dataSectionName == DATA_SECTION_MAP_BITS) { return deltaOutdoorDataMap.getMapBits(); }
else if (dataSectionName == DATA_SECTION_REMAINING_DATA) { return deltaOutdoorDataMap.getRemainingData(); }
else if (dataSectionName == DATA_SECTION_MAP_NOTES) { return deltaOutdoorDataMap.getMapNoteList(); }
else throw new IllegalStateException("DataSection " + dataSectionName);
}
public Component getComponentForDataSection(TaskObserver taskObserver, String dataSectionName) throws InterruptedException
{
if (dataSectionName == DATA_SECTION_UNKNOWN0) { return getGeneralPanel(taskObserver); }
else if (dataSectionName == DATA_SECTION_VISIBLE_MAP_1) { return getVisibleMapPanel1(taskObserver); }
else if (dataSectionName == DATA_SECTION_VISIBLE_MAP_2) { return getVisibleMapPanel2(taskObserver); }
else if (dataSectionName == DATA_SECTION_FACET_ATTRIBUTES) { return getFacetAttributesPanel(taskObserver); }
else if (dataSectionName == DATA_SECTION_SPRITE_ATTRIBUTES) { return getSpriteAttributesPanel(taskObserver); }
else if (dataSectionName == DATA_SECTION_MAP_BITS) { return getMapBitsPanel(taskObserver); }
else if (dataSectionName == DATA_SECTION_REMAINING_DATA) { return getRemainingDataPanel(taskObserver); }
else return super.getComponent(dataSectionName, taskObserver);
}
public Component getListComponentForDataSection(TaskObserver taskObserver, String dataSectionName, List list, Iterator indexIterator) throws InterruptedException
{
if (dataSectionName == DATA_SECTION_UNKNOWN0) { return getGeneralPanel(taskObserver); }
else if (dataSectionName == DATA_SECTION_VISIBLE_MAP_1) { return getVisibleMapPanel1(taskObserver); }
else if (dataSectionName == DATA_SECTION_VISIBLE_MAP_2) { return getVisibleMapPanel2(taskObserver); }
else if (dataSectionName == DATA_SECTION_FACET_ATTRIBUTES) { return getFacetAttributesPanel(taskObserver); }
else if (dataSectionName == DATA_SECTION_SPRITE_ATTRIBUTES) { return getSpriteAttributesPanel(taskObserver); }
else if (dataSectionName == DATA_SECTION_MAP_BITS) { return getMapBitsPanel(taskObserver); }
else if (dataSectionName == DATA_SECTION_REMAINING_DATA) { return getRemainingDataPanel(taskObserver); }
else return super.getListComponent(dataSectionName, taskObserver, list, indexIterator);
}
public DataTypeInfo getDataTypeInfo(String dataSectionName)
{
if (dataSectionName == DATA_SECTION_CREATURES) { return creatureDataTypeInfo; }
else if (dataSectionName == DATA_SECTION_ITEMS) { return itemDataTypeInfo; }
else if (dataSectionName == DATA_SECTION_CHEST_CONTENTS) { return chestContentsDataTypeInfo; }
else if (dataSectionName == DATA_SECTION_MAP_NOTES) { return mapNoteDataTypeInfo; }
else throw new IllegalStateException("DataSection " + dataSectionName);
}
private DataTypeInfo creatureDataTypeInfo = new AbstractDataTypeInfo() {
public String getDataTypeNameSingular() { return "Creature"; }
public String getDataTypeNamePlural() { return "Creatures"; }
public List getDataList() { return deltaOutdoorDataMap.getCreatureList(); }
public List getOffsetList() { return Creature.getOffsetList(deltaOutdoorDataMap.getGameVersion()); }
public ComparativeTableControl.DataSource getComparativeDataSource() {
return Creature.getComparativeDataSource(getDataList()); }
public Component getDataControl(int dataIndex) {
return new CreatureControl((Creature)getDataList().get(dataIndex)); }
public void addDataAtIndexFromComponent(int index, Component component) {
getDataList().add(index, ((CreatureControl)component).getCreature()); }
public Component createNewDataControl() {
return new CreatureControl(createNewCreature()); }
};
private DataTypeInfo itemDataTypeInfo = new AbstractDataTypeInfo() {
public String getDataTypeNameSingular() { return "Item"; }
public String getDataTypeNamePlural() { return "Items"; }
public List getDataList() { return deltaOutdoorDataMap.getItemList(); }
public List getOffsetList() { return Item.getOffsetList(deltaOutdoorDataMap.getGameVersion()); }
public ComparativeTableControl.DataSource getComparativeDataSource() {
return Item.getComparativeDataSource(getDataList()); }
public Component getDataControl(int dataIndex) {
return new ItemControl((Item)getDataList().get(dataIndex)); }
public void addDataAtIndexFromComponent(int index, Component component) {
getDataList().add(index, ((ItemControl)component).getItem()); }
public Component createNewDataControl() {
return new ItemControl(createNewItem()); }
};
private DataTypeInfo chestContentsDataTypeInfo = new AbstractDataTypeInfo() {
public String getDataTypeNameSingular() { return "ChestContents"; }
public String getDataTypeNamePlural() { return "ChestContents"; }
public List getDataList() { return deltaOutdoorDataMap.getChestContentsList(); }
public List getOffsetList() { return ChestContents.getRemainingDataOffsetList(); }
public ComparativeTableControl.DataSource getComparativeDataSource() {
return ChestContents.getRemainingDataComparativeDataSource(getDataList()); }
public Component getDataControl(int dataIndex) {
return new ChestContentsControl((ChestContents)getDataList().get(dataIndex)); }
public void addDataAtIndexFromComponent(int index, Component component) {
getDataList().add(index, ((ChestContentsControl)component).getChestContents()); }
public Component createNewDataControl() {
return new ChestContentsControl(createNewChestContents()); }
};
private DataTypeInfo mapNoteDataTypeInfo = new AbstractDataTypeInfo() {
public String getDataTypeNameSingular() { return "Map Note"; }
public String getDataTypeNamePlural() { return "Map Notes"; }
public List getDataList() { return deltaOutdoorDataMap.getMapNoteList(); }
public List getOffsetList() { return MapNote.getOffsetList(); }
public ComparativeTableControl.DataSource getComparativeDataSource() {
return MapNote.getComparativeDataSource(getDataList()); }
public Component getDataControl(int dataIndex) {
return new MapNoteControl((MapNote)getDataList().get(dataIndex)); }
public void addDataAtIndexFromComponent(int index, Component component) {
getDataList().add(index, ((MapNoteControl)component).getMapNote()); }
public Component createNewDataControl() {
return new MapNoteControl(createNewMapNote()); }
};
}