153 lines
4.5 KiB
Java
153 lines
4.5 KiB
Java
package resonantinduction.mechanical.fluid.pipe;
|
|
|
|
import java.awt.BorderLayout;
|
|
import java.awt.Dimension;
|
|
import java.awt.GridLayout;
|
|
|
|
import javax.swing.JScrollPane;
|
|
import javax.swing.JTable;
|
|
import javax.swing.table.AbstractTableModel;
|
|
import javax.swing.table.TableModel;
|
|
|
|
import net.minecraftforge.common.ForgeDirection;
|
|
import resonant.api.grid.INode;
|
|
import resonant.api.grid.INodeProvider;
|
|
import resonantinduction.core.debug.FrameNodeDebug;
|
|
import resonantinduction.core.debug.UpdatePanel;
|
|
import resonantinduction.core.debug.UpdatedLabel;
|
|
|
|
/** Java GUI used to help debug pipe information
|
|
*
|
|
* @author Darkguardsman */
|
|
@SuppressWarnings("serial")
|
|
public class PipeNodeFrame extends FrameNodeDebug
|
|
{
|
|
public PipeNodeFrame(INodeProvider node)
|
|
{
|
|
super(node, PipePressureNode.class);
|
|
}
|
|
|
|
@Override
|
|
public void buildTop(UpdatePanel panel)
|
|
{
|
|
panel.setLayout(new GridLayout(1, 2, 0, 0));
|
|
UpdatedLabel tickLabel = new UpdatedLabel("Node: ")
|
|
{
|
|
@Override
|
|
public String buildLabel()
|
|
{
|
|
return super.buildLabel() + PipeNodeFrame.this.getNode();
|
|
}
|
|
};
|
|
panel.add(tickLabel);
|
|
|
|
UpdatedLabel xLabel = new UpdatedLabel("Parent: ")
|
|
{
|
|
@Override
|
|
public String buildLabel()
|
|
{
|
|
return super.buildLabel() + (PipeNodeFrame.this.getNode() != null ? PipeNodeFrame.this.getNode().pipe() : "null");
|
|
}
|
|
};
|
|
panel.add(xLabel);
|
|
}
|
|
|
|
@Override
|
|
public void buildCenter(UpdatePanel panel)
|
|
{
|
|
panel.setLayout(new BorderLayout());
|
|
TableModel dataModel = new AbstractTableModel()
|
|
{
|
|
@Override
|
|
public int getColumnCount()
|
|
{
|
|
return 3;
|
|
}
|
|
|
|
@Override
|
|
public String getColumnName(int column)
|
|
{
|
|
switch (column)
|
|
{
|
|
case 0:
|
|
return "Direction";
|
|
case 1:
|
|
return "Tile";
|
|
case 2:
|
|
return "Pressure";
|
|
}
|
|
return "---";
|
|
}
|
|
|
|
@Override
|
|
public int getRowCount()
|
|
{
|
|
if (getNode() != null && getNode().getConnections() != null)
|
|
{
|
|
return getNode().getConnections().size();
|
|
}
|
|
return 10;
|
|
}
|
|
|
|
@Override
|
|
public Object getValueAt(int row, int col)
|
|
{
|
|
if (getNode() != null && getNode().getConnections() != null)
|
|
{
|
|
ForgeDirection dir = (ForgeDirection) getNode().getConnections().values().toArray()[row];
|
|
switch (col)
|
|
{
|
|
case 0:
|
|
return dir;
|
|
case 1:
|
|
return getNode().getConnections().keySet().toArray()[row];
|
|
case 2:
|
|
return getNode().getPressure(dir);
|
|
}
|
|
}
|
|
return "00000";
|
|
}
|
|
};
|
|
JTable table = new JTable(dataModel);
|
|
table.setAutoCreateRowSorter(true);
|
|
JScrollPane tableScroll = new JScrollPane(table);
|
|
Dimension tablePreferred = tableScroll.getPreferredSize();
|
|
tableScroll.setPreferredSize(new Dimension(tablePreferred.width, tablePreferred.height / 3));
|
|
|
|
panel.add(tableScroll, BorderLayout.SOUTH);
|
|
|
|
UpdatePanel topPanel = new UpdatePanel();
|
|
topPanel.setLayout(new GridLayout(1, 2, 0, 0));
|
|
UpdatedLabel velLabel = new UpdatedLabel("Fluid: ")
|
|
{
|
|
@Override
|
|
public String buildLabel()
|
|
{
|
|
return super.buildLabel() + PipeNodeFrame.this.getNode().pipe().tank.getFluid();
|
|
}
|
|
};
|
|
topPanel.add(velLabel);
|
|
|
|
UpdatedLabel angleLabel = new UpdatedLabel("Volume: ")
|
|
{
|
|
@Override
|
|
public String buildLabel()
|
|
{
|
|
return super.buildLabel() + PipeNodeFrame.this.getNode().pipe().tank.getFluidAmount() + "mb";
|
|
}
|
|
};
|
|
topPanel.add(angleLabel);
|
|
panel.add(topPanel, BorderLayout.NORTH);
|
|
}
|
|
|
|
@Override
|
|
public PipePressureNode getNode()
|
|
{
|
|
INode node = super.getNode();
|
|
if (node instanceof PipePressureNode)
|
|
{
|
|
return (PipePressureNode) node;
|
|
}
|
|
return null;
|
|
}
|
|
} |