L
Lars Schouw
I want to resize a JPanel derived class when I startup the
application.
How can I do that?
I have tried to do it in main() but without any luck!! See main
method.
My source code:
package com.dresdnerkb.basind.client;
import java.net.*;
import java.text.*;
import java.util.*;
import java.awt.*;
import java.awt.event.WindowEvent;
import java.awt.event.WindowAdapter;
import javax.swing.*;
import javax.swing.table.*;
import com.dresdnerkb.basind.table.*;
public class BasIndApplet extends JPanel
{
private BasIndClient client;
private BasIndView view0;
private BasIndView view1;
private BasIndView view2;
private URL url;
private Config config;
private JPanel basePanel;
private JPanel viewsPanel;
private BondsPanel bondsPanel;
private TypesPanel typesPanel;
private FieldsPanel fieldsPanel;
private JDialog bondsDialog;
private JDialog typesDialog;
private JDialog fieldsDialog;
private String[] prods;
private String[] terms;
private String sortby;
private String order;
private String[] fields;
private JFrame frame;
private final Color fbgColor = new Color(30, 150, 50); // Feeder
Back Ground
private final Color bbColor = new Color(30, 60, 180); // BB
private final Color esColor = Color.red; // ES
private final Color etcColor = new Color(30, 150, 50); // ETC
// private final Color defColor = new Color(50, 50, 50); // Default
// Was never used
private final Color hbgColor = new Color(30, 60, 180); // Highlight
Back Ground
private final Color bggColor = new Color(220, 220, 220); // Back
Ground Gray
protected static Sorter.Comparer doubleComp = new Sorter.Comparer() {
public int compare(Object a, Object b) { return
(int)(Double.parseDouble((String)a) - Double.parseDouble((String)b));
}
};
public static void main(String[] args)
{
BasIndApplet applet = new BasIndApplet();
applet.basePanel = new JPanel(new BorderLayout());
JPanel mainpanel = applet.getPanel();
applet.frame = new JFrame("Basis Indicator");
// HELP: RESIZE DOES NOT WORK!!
applet.frame.setBounds(0,0,1000,1000);
applet.revalidate();
applet.frame.getContentPane().add(mainpanel);
applet.frame.pack();
applet.frame.setVisible(true);
applet.frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent ev) {
System.exit(0);
}
});
applet.init();
}
public JPanel getPanel() { return basePanel; }
public void init()
{
// String host = getCodeBase().getHost();
int port = 8000;
try {
// TODO: get back to this code before releasing
//url = new URL(getCodeBase(), "servlet/Config");
// Test code TODO: Must not go into produciton like this!
url = new URL(new URL("http://localhost/basind/"),
"servlet/Config");
}
catch (MalformedURLException mue) {
System.err.println("BasIndApplet::init> " + mue.toString());
}
// initCommon(host, port);
// initCommon("localhost", port); // TODO: Make this work on
another machine as well.
initCommon("basisindicator.tokyo.dresdnerkb.com", port); //
TODO: Make this work on another machine as well.
}
public void initCommon(String host, int port)
{
client = new BasIndClient(host, port);
try {
client.start();
} catch(Exception ex) {
ex.printStackTrace();
throw new RuntimeException(ex.toString());
}
viewsPanel = new JPanel(new BorderLayout());
config = new Config(url);
config.load();
prods = config.getProducts();
terms = config.getTerms();
sortby = config.getSortBy();
order = config.getOrder();
fields = config.getFields();
view0 = createView0(client);
view1 = createView1(client);
view2 = createView2(client);
view0.start();
view1.start();
view2.start();
basePanel.add(view0, BorderLayout.NORTH);
for (int i = 0; i < prods.length; i++) {
if (prods.equals("RATES"))
viewsPanel.add(view1, BorderLayout.NORTH);
if (prods.equals("JGBS"))
viewsPanel.add(view2, BorderLayout.CENTER);
}
basePanel.add(viewsPanel, BorderLayout.CENTER);
frame.getContentPane().setLayout(new BorderLayout());
frame.getContentPane().add(basePanel);
}
public void stop()
{
try {
view2.stop();
view1.stop();
view0.stop();
client.stop();
client = null;
} catch(Exception ex) {
ex.printStackTrace();
throw new RuntimeException(ex.toString());
}
}
protected BasIndView createView0(BasIndClient client)
{
BasIndView view = new BasIndView(client, 2, 8);
view.setWidth(50);
view.setShowGrid(false);
view.setBackground(bggColor);
view.setHighlight(2);
view.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER);
view.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
view.setFont(new Font("sansserif", Font.BOLD, 11));
// FEEDER STATUS
String[] feederRowCod = { "FEEDER STATUS" };
String[] feederColLbl = { "BB", "ES", "ETC" };
String[] feederColCod = { "BB", "ES", "ETC" };
TableCellRenderer[] feederRs = new
TableCellRenderer[feederColCod.length];
for (int i = 0; i < feederColCod.length; i++) {
feederRs = new StringRenderer(fbgColor, Color.yellow, hbgColor);
}
Color[] feederColLblForeColor = { bbColor, esColor, etcColor };
Poster feederPoster = new Poster(view, 0, 0, 1, 3, false, true,
null, null, feederRowCod, feederColLbl, feederColCod, feederRs);
feederPoster.setColLblForeColor(feederColLblForeColor);
feederPoster.setTransportRIC(true);
feederPoster.loadPoster();
// TOOLBAR
view.addComponent(0, 3, 2, 5, new BasIndToolBar(this));
return view;
}
protected BasIndView createView1(BasIndClient client)
{
Color v1bg = new Color(150, 200, 255);
BasIndView view = new BasIndView(client, 16, 24);
view.setWidth(50);
view.setShowGrid(false);
view.setBackground(v1bg);
view.setHighlight(3);
view.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER);
view.setFont(new Font("sansserif", Font.BOLD, 11));
DoubleRenderer dR_0 = new DoubleRenderer(v1bg, Color.yellow,
hbgColor, 0, false);
DoubleRenderer dR_2 = new DoubleRenderer(v1bg, Color.yellow,
hbgColor, 2, false);
DoubleRenderer dR_3 = new DoubleRenderer(v1bg, Color.yellow,
hbgColor, 3, false);
DoubleRenderer dR_4 = new DoubleRenderer(v1bg, Color.yellow,
hbgColor, 4, false);
DoubleRenderer dR_6 = new DoubleRenderer(v1bg, Color.yellow,
hbgColor, 6, false);
StringRenderer szR = new StringRenderer(v1bg, null, null);
// CONNECTION STATUS
view.link("CONNECTION,STATUS", 0, 0, null);
// DATE
SimpleDateFormat f = new SimpleDateFormat("M/d/yy");
JLabel dateLabel = new JLabel(f.format(new Date()));
dateLabel.setFont(new Font("sansserif", Font.BOLD, 11));
dateLabel.setForeground(new Color(50, 50, 50));
dateLabel.setHorizontalAlignment(JLabel.CENTER);
view.addComponent(0, 1, 1, 1, dateLabel);
// 10 YR FUTURE
String[] fut10RowCod = { "JGBc1", "JGBc2" };
String[] fut10ColLbl = { "TICKER", "ASK", "BID", "LAST", "CHG" };
String[] fut10ColCod = { "CODE", "ASK", "BID", "LAST", "NET CHANGE"
};
TableCellRenderer[] fut10Rs = { szR, dR_2, dR_2, dR_2, dR_2 };
Poster fut10Poster = new Poster(view, 0, 3, 2, 5, false, true,
"10YR FUTRUE", null, fut10RowCod, fut10ColLbl, fut10ColCod,
fut10Rs);
fut10Poster.loadPoster();
// 5 YR FUTURE
String[] fut5RowCod = { "JMBc1", "JMBc2" };
String[] fut5ColCod = { "CODE", "ASK", "BID", "LAST", "NET CHANGE"
};
TableCellRenderer[] fut5Rs = { szR, dR_2, dR_2, dR_2, dR_2 };
Poster fut5Poster = new Poster(view, 0, 7, 2, 5, false, false,
"5YR FUTURE", null, fut5RowCod, null, fut5ColCod, fut5Rs);
fut5Poster.loadPoster();
// CCY
String[] ccyRowLbl = { "JPY", "EUR" };
String[] ccyRowCod = { "JPY=", "EURJPY=" };
String[] ccyColCod = { "ASK", "BID" };
TableCellRenderer[] ccyRs = { dR_2, dR_2 };
Poster ccyPoster = new Poster(view, 0, 10, 2, 2, true, false,
"CCY", ccyRowLbl, ccyRowCod, null, ccyColCod, ccyRs);
ccyPoster.loadPoster();
// EUROYEN
String[] euroRowCod = { "JEYc1", "JEYc2", "JEYc3", "JEYc4", "JEYc5",
"JEYc6" };
String[] euroColLbl = { "TICKER", "ASK", "BID", "LAST", "CHG" };
String[] euroColCod = { "CODE", "ASK", "BID", "LAST", "NET CHANGE"
};
TableCellRenderer[] euroRs = { szR, dR_3, dR_3, dR_3, dR_3 };
Poster euroPoster = new Poster(view, 5, 1, 6, 5, false, true,
"EUROYEN", null, euroRowCod, euroColLbl, euroColCod, euroRs);
euroPoster.loadPoster();
// 10YR FUT SPREAD
String[] fut10spRowCod = { "JGBc1-c2" };
String[] fut10spColCod = { "CODE", "ASK", "BID", "LAST", "NET
CHANGE" };
TableCellRenderer[] fut10spRs = { szR, dR_2, dR_2, dR_2, dR_2 };
Poster fut10spPoster = new Poster(view, 5, 9, 1, 5, false, false,
"10YR FUT SPREAD", null, fut10spRowCod, null, fut10spColCod,
fut10spRs);
fut10spPoster.loadPoster();
// 5YR FUT SPREAD
String[] fut5spRowCod = { "JMBc1-c2" };
String[] fut5spColCod = { "CODE", "ASK", "BID", "LAST", "NET CHANGE"
};
TableCellRenderer[] fut5spRs = { szR, dR_2, dR_2, dR_2, dR_2 };
Poster fut5spPoster = new Poster(view, 5, 11, 1, 5, false, false,
"5YR FUT SPREAD", null, fut5spRowCod, null, fut5spColCod,
fut5spRs);
fut5spPoster.loadPoster();
// NIKKEI
String[] nikkeiRowCod = { "JNIc1" };
String[] nikkeiColCod = { "CODE", "ASK", "BID", "LAST", "NET CHANGE"
};
TableCellRenderer[] nikkeiRs = { szR, dR_0, dR_0, dR_0, dR_0 };
Poster nikkeiPoster = new Poster(view, 5, 13, 1, 5, false, false,
"NIKKEI", null, nikkeiRowCod, null, nikkeiColCod, nikkeiRs);
nikkeiPoster.loadPoster();
// SWAP
String[] swapRowLbl = { "1", "2", "3", "4", "5", "6", "7", "8", "9",
"10", "12", "15", "20", "30" };
String[] swapRowCod = { "JPYSB6L1Y=TKFX", "JPYSB6L2Y=TKFX",
"JPYSB6L3Y=TKFX", "JPYSB6L4Y=TKFX", "JPYSB6L5Y=TKFX",
"JPYSB6L6Y=TKFX", "JPYSB6L7Y=TKFX", "JPYSB6L8Y=TKFX",
"JPYSB6L9Y=TKFX", "JPYSB6L10Y=TKFX",
"JPYSB6L12Y=TKFX", "JPYSB6L15Y=TKFX", "JPYSB6L20Y=TKFX",
"JPYSB6L30Y=TKFX" };
String[] swapColLbl = { "ASK", "BID", "MID" };
String[] swapColCod = { "ASK", "BID", "MID" };
TableCellRenderer[] swapRs = { dR_3, dR_3, dR_3 };
Poster swapPoster = new Poster(view, 10, 1, 14, 3, true, true,
"SWAP", swapRowLbl, swapRowCod, swapColLbl, swapColCod, swapRs);
swapPoster.loadPoster();
// LIBOR
String[] liborRowLbl = { "1", "2", "3", "4", "5", "6", "7", "8",
"9", "10", "11", "12" };
String[] liborRowCod = { "JPY1MFSR=", "JPY2MFSR=", "JPY3MFSR=",
"JPY4MFSR=", "JPY5MFSR=", "JPY6MFSR=",
"JPY7MFSR=", "JPY8MFSR=", "JPY9MFSR=", "JPY10MFSR=",
"JPY11MFSR=", "JPY1YFSR=" };
String[] liborColCod = { "PRIM ACT 1" };
TableCellRenderer[] liborRs = { dR_4 };
Poster liborPoster = new Poster(view, 14, 1, 12, 1, true, false,
"LIBOR", liborRowLbl, liborRowCod, null, liborColCod, liborRs);
liborPoster.loadPoster();
// VS 1st FUTURE
String[] vs1stRowCod = { "JBCTD1" };
String[] vs1stColLbl_1 = { "CTD", "CF" };
String[] vs1stColCod_1 = { "ISSUE", "CF" };
TableCellRenderer[] vs1stRs_1 = { szR, dR_6 };
Poster vs1stPoster_1 = new Poster(view, 16, 1, 1, 2, false, true,
"VS 1st FUTURE", null, vs1stRowCod, vs1stColLbl_1, vs1stColCod_1,
vs1stRs_1);
vs1stPoster_1.loadPoster();
String[] vs1stColLbl_2 = { "SaBPV", "SiBPV", "SaCHG", "SiCHG" };
String[] vs1stColCod_2 = { "SaBPV", "SiBPV", "SaCHG", "SiCHG" };
TableCellRenderer[] vs1stRs_2 = { dR_3, dR_3, dR_3, dR_3 };
Poster vs1stPoster_2 = new Poster(view, 16, 4, 1, 4, false, true,
"BPV", null, vs1stRowCod, vs1stColLbl_2, vs1stColCod_2, vs1stRs_2);
vs1stPoster_2.loadPoster();
// VS 2nd FUTURE
String[] vs2ndRowCod = { "JBCTD2" };
String[] vs2ndColLbl_1 = { "CTD", "CF" };
String[] vs2ndColCod_1 = { "ISSUE", "CF" };
TableCellRenderer[] vs2ndRs_1 = { szR, dR_6 };
Poster vs2ndPoster_1 = new Poster(view, 16, 8, 1, 2, false, true,
"VS 2nd FUTURE", null, vs2ndRowCod, vs2ndColLbl_1, vs2ndColCod_1,
vs2ndRs_1);
vs2ndPoster_1.loadPoster();
String[] vs2ndColLbl_2 = { "SaBPV", "SiBPV", "SaCHG", "SiCHG" };
String[] vs2ndColCod_2 = { "SaBPV", "SiBPV", "SaCHG", "SiCHG" };
TableCellRenderer[] vs2ndRs_2 = { dR_3, dR_3, dR_3, dR_3 };
Poster vs2ndPoster_2 = new Poster(view, 16, 11, 1, 4, false, true,
"BPV", null, vs2ndRowCod, vs2ndColLbl_2, vs2ndColCod_2, vs2ndRs_2);
vs2ndPoster_2.loadPoster();
// STRING
String[] stringRowCod = { "JEYc1", "JEYc2", "JEYc3", "JEYc4",
"JEYc5", "JEYc6",
"JEYc7", "JEYc8", "JEYc9", "JEYc10", "JEYc11", "JEYc12" };
String[] stringColCod = { "CODE", "ASK", "BID", "MID" };
TableCellRenderer[] stringRs = { szR, dR_3, dR_3, dR_3 };
Poster stringPoster = new Poster(view, 20, 1, 12, 4, false, false,
"STRING CALCULATION", null, stringRowCod, null, stringColCod,
stringRs);
stringPoster.loadPoster();
return view;
}
protected BasIndView createView2(BasIndClient client)
{
ColumnGroup[] groups = new ColumnGroup[fields.length];
for (int i = 0; i < groups.length; i++) {
if (fields.equals("INDICATION")) {
groups = new ColumnGroup("INDICATION");
groups.add(new ColumnGroup("ASK"));
groups.add(new ColumnGroup("BID"));
}
else if (fields.equals("LAST")) {
groups = new ColumnGroup("LAST");
}
else if (fields.equals("SNAPSHOT")) {
groups = new ColumnGroup("SNAPSHOT");
groups.add(new ColumnGroup("TIME"));
groups.add(new ColumnGroup("FUT"));
groups.add(new ColumnGroup("SwSpd"));
}
else if (fields.equals("SPREAD VS PCS")) {
groups = new ColumnGroup("SPREAD VS PCS");
groups.add(new ColumnGroup("ASK"));
groups.add(new ColumnGroup("BID"));
groups.add(new ColumnGroup("LAST"));
}
else if (fields.equals("PCS")) {
groups = new ColumnGroup("PCS");
}
else if (fields.equals("FV")) {
groups = new ColumnGroup("FV");
}
else if (fields.equals("VS SWAP")) {
groups = new ColumnGroup("VS SWAP");
groups.add(new ColumnGroup("ASK"));
groups.add(new ColumnGroup("BID"));
}
else if (fields.equals("AGAINST 1ST")) {
groups = new ColumnGroup("AGAINST 1st");
groups.add(new ColumnGroup("ASK"));
groups.add(new ColumnGroup("BID"));
}
else if (fields.equals("AGAINST 2ND")) {
groups = new ColumnGroup("AGAINST 2nd");
groups.add(new ColumnGroup("ASK"));
groups.add(new ColumnGroup("BID"));
}
else if (fields.equals("TED")) {
groups = new ColumnGroup("TED");
}
else if (fields.equals("TH SI CHG")) {
groups = new ColumnGroup("Th Si Chg");
groups.add(new ColumnGroup("1st"));
groups.add(new ColumnGroup("2nd"));
}
else if (fields.equals("SABPV")) {
groups = new ColumnGroup("SaBPV");
}
else if (fields.equals("SIBPV")) {
groups = new ColumnGroup("SiBPV");
}
else if (fields.equals("CPN")) {
groups = new ColumnGroup("CPN");
}
else if (fields.equals("MAT")) {
groups = new ColumnGroup("MAT");
}
else if (fields.equals("SETTLE")) {
groups = new ColumnGroup("SETTLE");
}
else if (fields.equals("ISDATE")) {
groups = new ColumnGroup("ISDATE");
}
else if (fields.equals("FCDATE")) {
groups = new ColumnGroup("FCDATE");
}
else if (fields.equals("PRICE")) {
groups = new ColumnGroup("PRICE");
groups.add(new ColumnGroup("ASK"));
groups.add(new ColumnGroup("BID"));
groups.add(new ColumnGroup("PRICE"));
}
else if (fields.equals("SIMPLE")) {
groups = new ColumnGroup("SIMPLE");
}
else if (fields.equals("SEMI")) {
groups = new ColumnGroup("SEMI");
}
else if (fields.equals("STRING")) {
groups = new ColumnGroup("STRING");
}
else if (fields.equals("CF1")) {
groups = new ColumnGroup("CF1");
}
else if (fields.equals("CF2")) {
groups = new ColumnGroup("CF2");
}
else if (fields.equals("OFFER YIELD")) {
groups = new ColumnGroup("OFFER YIELD");
groups.add(new ColumnGroup("ASK"));
groups.add(new ColumnGroup("BID"));
}
else if (fields.equals("INTERP SWAP")) {
groups = new ColumnGroup("INTERP SWAP");
groups.add(new ColumnGroup("ASK"));
groups.add(new ColumnGroup("BID"));
}
else if (fields.equals("LIFE")) {
groups = new ColumnGroup("LIFE");
}
}
String[] issues = null;
Vector vt = new Vector();
for (int i = 0; i < terms.length; i++) {
String[] tempIssues = client.getIssues(terms + "*");
for (int j = 0; j < tempIssues.length; j++)
vt.addElement(tempIssues[j]);
tempIssues = null;
}
issues = new String[vt.size()];
vt.copyInto(issues);
boolean uporder = (order.equals("ASCEND")) ? true : false;
int rows = issues.length;
int cols = ColumnGroup.getAllLeafCount(groups);
BasIndView view = new BasIndView(client, rows, cols);
view.setTableColumnHeader(groups);
view.setWidth(50);
view.setHighlight(3);
view.setFont(new Font("sansserif", Font.BOLD, 11));
Vector v = new Vector();
String keys[];
if (sortby.equals("LIFE")) {
for (int i = 0; i < rows; i++) {
v.addElement(client.getData(issues + ",LIFE"));
}
}
else if (order.equals("DESCEND")) {
TreeMap termorder = new TreeMap();
int border, edge, num = 1, sign;
for (int i = 0; i < rows; i++) {
border = Sorter.first_num(issues);
edge = (issues.endsWith("R")) ? issues.length()-1 :
issues.length();
String term = issues.substring(0, border);
int series = Integer.parseInt(issues.substring(border, edge));
if (!termorder.containsKey(term)) {
termorder.put(term, String.valueOf(num++));
}
sign = (uporder) ? 1 : -1;
int key = 100 + (sign) *
Integer.parseInt((String)termorder.get(term)) * 1000 + series;
v.addElement(new Integer(key).toString());
}
}
keys = new String[v.size()];
v.copyInto(keys);
Sorter.sort(keys, issues, 0, rows-1, uporder, doubleComp);
view.setIssues(issues);
DoubleRenderer dRO_3 = new DoubleRenderer(Color.white, Color.yellow,
hbgColor, 3, true);
DoubleRenderer dRE_3 = new DoubleRenderer(bggColor, Color.yellow,
hbgColor, 3, true);
DoubleRenderer dRO_3H = new DoubleRenderer(Color.white,
Color.yellow, hbgColor, 3, false);
DoubleRenderer dRE_3H = new DoubleRenderer(bggColor, Color.yellow,
hbgColor, 3, false);
DoubleRenderer dRO_0 = new DoubleRenderer(Color.white, Color.yellow,
hbgColor, 0, true);
DoubleRenderer dRE_0 = new DoubleRenderer(bggColor, Color.yellow,
hbgColor, 0, true);
DoubleRenderer dRO_6 = new DoubleRenderer(Color.white, Color.yellow,
hbgColor, 6, true);
DoubleRenderer dRE_6 = new DoubleRenderer(bggColor, Color.yellow,
hbgColor, 6, true);
DoubleRenderer dRO_100 = new DoubleRenderer(Color.white,
Color.yellow, hbgColor, 3, true); dRO_100.setMultiplier(100.0);
DoubleRenderer dRE_100 = new DoubleRenderer(bggColor, Color.yellow,
hbgColor, 3, true); dRE_100.setMultiplier(100.0);
DoubleRenderer dRO_2 = new DoubleRenderer(Color.white, Color.yellow,
hbgColor, 2, true);
DoubleRenderer dRE_2 = new DoubleRenderer(bggColor, Color.yellow,
hbgColor, 2, true);
DateRenderer dtRO = new DateRenderer(Color.white, Color.yellow,
hbgColor, "M/d/yy");
DateRenderer dtRE = new DateRenderer(bggColor, Color.yellow,
hbgColor, "M/d/yy");
DateRenderer tmRO = new DateRenderer(Color.white, Color.yellow,
hbgColor, "HH:mm");
DateRenderer tmRE = new DateRenderer(bggColor, Color.yellow,
hbgColor, "HH:mm");
DoubleRenderer dR_3;
DoubleRenderer dR_3H;
DoubleRenderer dR_0;
DoubleRenderer dR_6;
DoubleRenderer dR_100;
DoubleRenderer dR_2;
DateRenderer dtR;
DateRenderer tmR;
for (int row = 0; row < rows; row++) {
if (row % 2 == 0) {
dR_3H = dRO_3;
dR_3 = dRO_3H;
dR_0 = dRO_0;
dR_6 = dRO_6;
dR_100 = dRO_100;
dtR = dtRO;
tmR = tmRO;
dR_2 = dRO_2;
}
else {
dR_3H = dRE_3;
dR_3 = dRE_3H;
dR_0 = dRE_0;
dR_6 = dRE_6;
dR_100 = dRE_100;
dtR = dtRE;
tmR = tmRE;
dR_2 = dRE_2;
}
for (int fi = 0, col = 0; fi < fields.length; fi++) {
if (fields[fi].equals("INDICATION")) {
view.link(issues[row] + ",ASK", row, col++, dR_3, true);
view.link(issues[row] + ",BID", row, col++, dR_3, true);
}
else if (fields[fi].equals("LAST")) {
view.link(issues[row] + ",LAST", row, col++, dR_3, true);
}
else if (fields[fi].equals("SNAPSHOT")) {
view.link(issues[row] + ",SNAPSHOT TIME", row, col++, tmR, true);
view.link(issues[row] + ",SNAPSHOT FIRST LAST", row, col++, dR_2,
true);
view.link(issues[row] + ",SNAPSHOT SWAP SPREAD", row, col++,
dR_3, true);
}
else if (fields[fi].equals("SPREAD VS PCS")) {
view.link(issues[row] + ",ASK VS TSE", row, col++, dR_3, true);
view.link(issues[row] + ",BID VS TSE", row, col++, dR_3, true);
view.link(issues[row] + ",LAST VS TSE", row, col++, dR_3, true);
}
else if (fields[fi].equals("PCS")) {
view.link(issues[row] + ",SIMPLEY", row, col++, dR_3);
}
else if (fields[fi].equals("FV")) {
view.link(issues[row] + ",FV", row, col++, dR_3);
}
else if (fields[fi].equals("VS SWAP")) {
view.link(issues[row] + ",ASK VS SWAP", row, col++, dR_3H);
view.link(issues[row] + ",BID VS SWAP", row, col++, dR_3H);
}
else if (fields[fi].equals("AGAINST 1ST")) {
view.link(issues[row] + ",ASK AGAINST FIRST", row, col++, dR_3);
view.link(issues[row] + ",BID AGAINST FIRST", row, col++, dR_3);
}
else if (fields[fi].equals("AGAINST 2ND")) {
view.link(issues[row] + ",ASK AGAINST SECOND", row, col++, dR_3);
view.link(issues[row] + ",BID AGAINST SECOND", row, col++, dR_3);
}
else if (fields[fi].equals("TED")) {
view.link(issues[row] + ",TED", row, col++, dR_3);
}
else if (fields[fi].equals("TH SI CHG")) {
view.link(issues[row] + ",SiCHG AGAINST FIRST", row, col++,
dR_3H);
view.link(issues[row] + ",SiCHG AGAINST SECOND", row, col++,
dR_3H);
}
else if (fields[fi].equals("SABPV")) {
view.link(issues[row] + ",SaBPV", row, col++, dR_3);
}
else if (fields[fi].equals("SIBPV")) {
view.link(issues[row] + ",SiBPV", row, col++, dR_3);
}
else if (fields[fi].equals("CPN")) {
view.link(issues[row] + ",COUPON", row, col++, dR_100);
}
else if (fields[fi].equals("MAT")) {
view.link(issues[row] + ",MATURITY", row, col++, dtR);
}
else if (fields[fi].equals("SETTLE")) {
view.link(issues[row] + ",SETTLE", row, col++, dtR);
}
else if (fields[fi].equals("ISDATE")) {
view.link(issues[row] + ",ISDATE", row, col++, dtR);
}
else if (fields[fi].equals("FCDATE")) {
view.link(issues[row] + ",FCDATE", row, col++, dtR);
}
else if (fields[fi].equals("PRICE")) {
view.link(issues[row] + ",ASK PRICE", row, col++, dR_3);
view.link(issues[row] + ",BID PRICE", row, col++, dR_3);
view.link(issues[row] + ",LAST PRICE", row, col++, dR_3);
}
else if (fields[fi].equals("SIMPLE")) {
view.link(issues[row] + ",SIMPLE YIELD", row, col++, dR_3);
}
else if (fields[fi].equals("SEMI")) {
view.link(issues[row] + ",SEMI YIELD", row, col++, dR_3);
}
else if (fields[fi].equals("STRING")) {
view.link(issues[row] + ",STRING", row, col++, dR_3H);
}
else if (fields[fi].equals("CF1")) {
view.link(issues[row] + ",CF1", row, col++, dR_6);
}
else if (fields[fi].equals("CF2")) {
view.link(issues[row] + ",CF2", row, col++, dR_6);
}
else if (fields[fi].equals("OFFER YIELD")) {
view.link(issues[row] + ",ASK OFFER YIELD", row, col++, dR_3);
view.link(issues[row] + ",BID OFFER YIELD", row, col++, dR_3);
}
else if (fields[fi].equals("INTERP SWAP")) {
view.link(issues[row] + ",ASK INTERP SWAP", row, col++, dR_3H);
view.link(issues[row] + ",BID INTERP SWAP", row, col++, dR_3H);
}
else if (fields[fi].equals("LIFE")) {
view.link(issues[row] + ",LIFE", row, col++, dR_0);
}
}
}
return view;
}
protected void createViewsDialog()
{
typesPanel = new TypesPanel(prods);
String[] oldprods = typesPanel.getSelectedProducts();
JOptionPane viewspane = new JOptionPane(typesPanel,
JOptionPane.PLAIN_MESSAGE, JOptionPane.OK_CANCEL_OPTION);
typesDialog = viewspane.createDialog(this, "View selector");
typesDialog.setResizable(false);
typesDialog.setModal(true);
typesDialog.show();
Object value = viewspane.getValue();
if ((value instanceof Integer) && (((Integer)value).intValue() ==
JOptionPane.OK_OPTION)) {
prods = typesPanel.getSelectedProducts();
for (int i = 0; i < prods.length; i++) {
if (prods.equals("RATES")) {
view1.stop();
viewsPanel.remove(view1);
}
else if (prods.equals("JGBS")) {
view2.stop();
viewsPanel.remove(view2);
}
}
basePanel.remove(viewsPanel);
viewsPanel = new JPanel(new BorderLayout());
config.setProducts(prods);
config.save();
for (int i = 0; i < prods.length; i++) {
if (prods.equals("RATES")) {
view1 = createView1(client);
view1.start();
viewsPanel.add(view1, BorderLayout.NORTH);
}
else if (prods.equals("JGBS")) {
view2 = createView2(client);
view2.start();
viewsPanel.add(view2, BorderLayout.CENTER);
}
}
basePanel.add(viewsPanel, BorderLayout.CENTER);
basePanel.invalidate();
basePanel.validate();
}
else {
typesPanel.setSelectedProducts(oldprods);
}
typesDialog.dispose();
}
protected void createBondsDialog()
{
bondsPanel = new BondsPanel(terms, sortby, order);
String[] oldterms = bondsPanel.getTerms();
String oldsortby = bondsPanel.getSortBy();
String oldorder = bondsPanel.getOrder();
JOptionPane bondspane = new JOptionPane(bondsPanel,
JOptionPane.PLAIN_MESSAGE, JOptionPane.OK_CANCEL_OPTION);
bondsDialog = bondspane.createDialog(this, "Bonds Selector");
bondsDialog.setResizable(false);
bondsDialog.setModal(true);
bondsDialog.show();
Object value = bondspane.getValue();
if ((value instanceof Integer) && (((Integer)value).intValue() ==
JOptionPane.OK_OPTION)) {
terms = bondsPanel.getTerms();
sortby = bondsPanel.getSortBy();
order = bondsPanel.getOrder();
view2.stop();
viewsPanel.remove(view2);
view2 = createView2(client);
view2.start();
viewsPanel.add(view2, BorderLayout.CENTER);
viewsPanel.invalidate();
viewsPanel.validate();
config.setTerms(terms);
config.setSortBy(sortby);
config.setOrder(order);
config.save();
}
else {
bondsPanel.setTerms(oldterms);
bondsPanel.setSortBy(oldsortby);
bondsPanel.setOrder(oldorder);
}
bondsDialog.dispose();
}
protected void createFieldsDialog()
{
fieldsPanel = new FieldsPanel(fields);
String[] oldfields = fieldsPanel.getViewList();
JOptionPane fieldspane = new JOptionPane(fieldsPanel,
JOptionPane.PLAIN_MESSAGE, JOptionPane.OK_CANCEL_OPTION);
fieldsDialog = fieldspane.createDialog(this, "Fields Selector");
fieldsDialog.setResizable(false);
fieldsDialog.setModal(true);
fieldsDialog.show();
Object value = fieldspane.getValue();
if ((value instanceof Integer) && (((Integer)value).intValue() ==
JOptionPane.OK_OPTION)) {
fields = fieldsPanel.getViewList();
view2.stop();
viewsPanel.remove(view2);
view2 = createView2(client);
view2.start();
viewsPanel.add(view2, BorderLayout.CENTER);
viewsPanel.invalidate();
viewsPanel.validate();
config.setFields(fields);
config.save();
}
else {
fieldsPanel.setViewList(oldfields);
}
fieldsDialog.dispose();
}
public void setURL(URL url) { this.url = url; }
public URL getURL() { return url; }
}
application.
How can I do that?
I have tried to do it in main() but without any luck!! See main
method.
My source code:
package com.dresdnerkb.basind.client;
import java.net.*;
import java.text.*;
import java.util.*;
import java.awt.*;
import java.awt.event.WindowEvent;
import java.awt.event.WindowAdapter;
import javax.swing.*;
import javax.swing.table.*;
import com.dresdnerkb.basind.table.*;
public class BasIndApplet extends JPanel
{
private BasIndClient client;
private BasIndView view0;
private BasIndView view1;
private BasIndView view2;
private URL url;
private Config config;
private JPanel basePanel;
private JPanel viewsPanel;
private BondsPanel bondsPanel;
private TypesPanel typesPanel;
private FieldsPanel fieldsPanel;
private JDialog bondsDialog;
private JDialog typesDialog;
private JDialog fieldsDialog;
private String[] prods;
private String[] terms;
private String sortby;
private String order;
private String[] fields;
private JFrame frame;
private final Color fbgColor = new Color(30, 150, 50); // Feeder
Back Ground
private final Color bbColor = new Color(30, 60, 180); // BB
private final Color esColor = Color.red; // ES
private final Color etcColor = new Color(30, 150, 50); // ETC
// private final Color defColor = new Color(50, 50, 50); // Default
// Was never used
private final Color hbgColor = new Color(30, 60, 180); // Highlight
Back Ground
private final Color bggColor = new Color(220, 220, 220); // Back
Ground Gray
protected static Sorter.Comparer doubleComp = new Sorter.Comparer() {
public int compare(Object a, Object b) { return
(int)(Double.parseDouble((String)a) - Double.parseDouble((String)b));
}
};
public static void main(String[] args)
{
BasIndApplet applet = new BasIndApplet();
applet.basePanel = new JPanel(new BorderLayout());
JPanel mainpanel = applet.getPanel();
applet.frame = new JFrame("Basis Indicator");
// HELP: RESIZE DOES NOT WORK!!
applet.frame.setBounds(0,0,1000,1000);
applet.revalidate();
applet.frame.getContentPane().add(mainpanel);
applet.frame.pack();
applet.frame.setVisible(true);
applet.frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent ev) {
System.exit(0);
}
});
applet.init();
}
public JPanel getPanel() { return basePanel; }
public void init()
{
// String host = getCodeBase().getHost();
int port = 8000;
try {
// TODO: get back to this code before releasing
//url = new URL(getCodeBase(), "servlet/Config");
// Test code TODO: Must not go into produciton like this!
url = new URL(new URL("http://localhost/basind/"),
"servlet/Config");
}
catch (MalformedURLException mue) {
System.err.println("BasIndApplet::init> " + mue.toString());
}
// initCommon(host, port);
// initCommon("localhost", port); // TODO: Make this work on
another machine as well.
initCommon("basisindicator.tokyo.dresdnerkb.com", port); //
TODO: Make this work on another machine as well.
}
public void initCommon(String host, int port)
{
client = new BasIndClient(host, port);
try {
client.start();
} catch(Exception ex) {
ex.printStackTrace();
throw new RuntimeException(ex.toString());
}
viewsPanel = new JPanel(new BorderLayout());
config = new Config(url);
config.load();
prods = config.getProducts();
terms = config.getTerms();
sortby = config.getSortBy();
order = config.getOrder();
fields = config.getFields();
view0 = createView0(client);
view1 = createView1(client);
view2 = createView2(client);
view0.start();
view1.start();
view2.start();
basePanel.add(view0, BorderLayout.NORTH);
for (int i = 0; i < prods.length; i++) {
if (prods.equals("RATES"))
viewsPanel.add(view1, BorderLayout.NORTH);
if (prods.equals("JGBS"))
viewsPanel.add(view2, BorderLayout.CENTER);
}
basePanel.add(viewsPanel, BorderLayout.CENTER);
frame.getContentPane().setLayout(new BorderLayout());
frame.getContentPane().add(basePanel);
}
public void stop()
{
try {
view2.stop();
view1.stop();
view0.stop();
client.stop();
client = null;
} catch(Exception ex) {
ex.printStackTrace();
throw new RuntimeException(ex.toString());
}
}
protected BasIndView createView0(BasIndClient client)
{
BasIndView view = new BasIndView(client, 2, 8);
view.setWidth(50);
view.setShowGrid(false);
view.setBackground(bggColor);
view.setHighlight(2);
view.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER);
view.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
view.setFont(new Font("sansserif", Font.BOLD, 11));
// FEEDER STATUS
String[] feederRowCod = { "FEEDER STATUS" };
String[] feederColLbl = { "BB", "ES", "ETC" };
String[] feederColCod = { "BB", "ES", "ETC" };
TableCellRenderer[] feederRs = new
TableCellRenderer[feederColCod.length];
for (int i = 0; i < feederColCod.length; i++) {
feederRs = new StringRenderer(fbgColor, Color.yellow, hbgColor);
}
Color[] feederColLblForeColor = { bbColor, esColor, etcColor };
Poster feederPoster = new Poster(view, 0, 0, 1, 3, false, true,
null, null, feederRowCod, feederColLbl, feederColCod, feederRs);
feederPoster.setColLblForeColor(feederColLblForeColor);
feederPoster.setTransportRIC(true);
feederPoster.loadPoster();
// TOOLBAR
view.addComponent(0, 3, 2, 5, new BasIndToolBar(this));
return view;
}
protected BasIndView createView1(BasIndClient client)
{
Color v1bg = new Color(150, 200, 255);
BasIndView view = new BasIndView(client, 16, 24);
view.setWidth(50);
view.setShowGrid(false);
view.setBackground(v1bg);
view.setHighlight(3);
view.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER);
view.setFont(new Font("sansserif", Font.BOLD, 11));
DoubleRenderer dR_0 = new DoubleRenderer(v1bg, Color.yellow,
hbgColor, 0, false);
DoubleRenderer dR_2 = new DoubleRenderer(v1bg, Color.yellow,
hbgColor, 2, false);
DoubleRenderer dR_3 = new DoubleRenderer(v1bg, Color.yellow,
hbgColor, 3, false);
DoubleRenderer dR_4 = new DoubleRenderer(v1bg, Color.yellow,
hbgColor, 4, false);
DoubleRenderer dR_6 = new DoubleRenderer(v1bg, Color.yellow,
hbgColor, 6, false);
StringRenderer szR = new StringRenderer(v1bg, null, null);
// CONNECTION STATUS
view.link("CONNECTION,STATUS", 0, 0, null);
// DATE
SimpleDateFormat f = new SimpleDateFormat("M/d/yy");
JLabel dateLabel = new JLabel(f.format(new Date()));
dateLabel.setFont(new Font("sansserif", Font.BOLD, 11));
dateLabel.setForeground(new Color(50, 50, 50));
dateLabel.setHorizontalAlignment(JLabel.CENTER);
view.addComponent(0, 1, 1, 1, dateLabel);
// 10 YR FUTURE
String[] fut10RowCod = { "JGBc1", "JGBc2" };
String[] fut10ColLbl = { "TICKER", "ASK", "BID", "LAST", "CHG" };
String[] fut10ColCod = { "CODE", "ASK", "BID", "LAST", "NET CHANGE"
};
TableCellRenderer[] fut10Rs = { szR, dR_2, dR_2, dR_2, dR_2 };
Poster fut10Poster = new Poster(view, 0, 3, 2, 5, false, true,
"10YR FUTRUE", null, fut10RowCod, fut10ColLbl, fut10ColCod,
fut10Rs);
fut10Poster.loadPoster();
// 5 YR FUTURE
String[] fut5RowCod = { "JMBc1", "JMBc2" };
String[] fut5ColCod = { "CODE", "ASK", "BID", "LAST", "NET CHANGE"
};
TableCellRenderer[] fut5Rs = { szR, dR_2, dR_2, dR_2, dR_2 };
Poster fut5Poster = new Poster(view, 0, 7, 2, 5, false, false,
"5YR FUTURE", null, fut5RowCod, null, fut5ColCod, fut5Rs);
fut5Poster.loadPoster();
// CCY
String[] ccyRowLbl = { "JPY", "EUR" };
String[] ccyRowCod = { "JPY=", "EURJPY=" };
String[] ccyColCod = { "ASK", "BID" };
TableCellRenderer[] ccyRs = { dR_2, dR_2 };
Poster ccyPoster = new Poster(view, 0, 10, 2, 2, true, false,
"CCY", ccyRowLbl, ccyRowCod, null, ccyColCod, ccyRs);
ccyPoster.loadPoster();
// EUROYEN
String[] euroRowCod = { "JEYc1", "JEYc2", "JEYc3", "JEYc4", "JEYc5",
"JEYc6" };
String[] euroColLbl = { "TICKER", "ASK", "BID", "LAST", "CHG" };
String[] euroColCod = { "CODE", "ASK", "BID", "LAST", "NET CHANGE"
};
TableCellRenderer[] euroRs = { szR, dR_3, dR_3, dR_3, dR_3 };
Poster euroPoster = new Poster(view, 5, 1, 6, 5, false, true,
"EUROYEN", null, euroRowCod, euroColLbl, euroColCod, euroRs);
euroPoster.loadPoster();
// 10YR FUT SPREAD
String[] fut10spRowCod = { "JGBc1-c2" };
String[] fut10spColCod = { "CODE", "ASK", "BID", "LAST", "NET
CHANGE" };
TableCellRenderer[] fut10spRs = { szR, dR_2, dR_2, dR_2, dR_2 };
Poster fut10spPoster = new Poster(view, 5, 9, 1, 5, false, false,
"10YR FUT SPREAD", null, fut10spRowCod, null, fut10spColCod,
fut10spRs);
fut10spPoster.loadPoster();
// 5YR FUT SPREAD
String[] fut5spRowCod = { "JMBc1-c2" };
String[] fut5spColCod = { "CODE", "ASK", "BID", "LAST", "NET CHANGE"
};
TableCellRenderer[] fut5spRs = { szR, dR_2, dR_2, dR_2, dR_2 };
Poster fut5spPoster = new Poster(view, 5, 11, 1, 5, false, false,
"5YR FUT SPREAD", null, fut5spRowCod, null, fut5spColCod,
fut5spRs);
fut5spPoster.loadPoster();
// NIKKEI
String[] nikkeiRowCod = { "JNIc1" };
String[] nikkeiColCod = { "CODE", "ASK", "BID", "LAST", "NET CHANGE"
};
TableCellRenderer[] nikkeiRs = { szR, dR_0, dR_0, dR_0, dR_0 };
Poster nikkeiPoster = new Poster(view, 5, 13, 1, 5, false, false,
"NIKKEI", null, nikkeiRowCod, null, nikkeiColCod, nikkeiRs);
nikkeiPoster.loadPoster();
// SWAP
String[] swapRowLbl = { "1", "2", "3", "4", "5", "6", "7", "8", "9",
"10", "12", "15", "20", "30" };
String[] swapRowCod = { "JPYSB6L1Y=TKFX", "JPYSB6L2Y=TKFX",
"JPYSB6L3Y=TKFX", "JPYSB6L4Y=TKFX", "JPYSB6L5Y=TKFX",
"JPYSB6L6Y=TKFX", "JPYSB6L7Y=TKFX", "JPYSB6L8Y=TKFX",
"JPYSB6L9Y=TKFX", "JPYSB6L10Y=TKFX",
"JPYSB6L12Y=TKFX", "JPYSB6L15Y=TKFX", "JPYSB6L20Y=TKFX",
"JPYSB6L30Y=TKFX" };
String[] swapColLbl = { "ASK", "BID", "MID" };
String[] swapColCod = { "ASK", "BID", "MID" };
TableCellRenderer[] swapRs = { dR_3, dR_3, dR_3 };
Poster swapPoster = new Poster(view, 10, 1, 14, 3, true, true,
"SWAP", swapRowLbl, swapRowCod, swapColLbl, swapColCod, swapRs);
swapPoster.loadPoster();
// LIBOR
String[] liborRowLbl = { "1", "2", "3", "4", "5", "6", "7", "8",
"9", "10", "11", "12" };
String[] liborRowCod = { "JPY1MFSR=", "JPY2MFSR=", "JPY3MFSR=",
"JPY4MFSR=", "JPY5MFSR=", "JPY6MFSR=",
"JPY7MFSR=", "JPY8MFSR=", "JPY9MFSR=", "JPY10MFSR=",
"JPY11MFSR=", "JPY1YFSR=" };
String[] liborColCod = { "PRIM ACT 1" };
TableCellRenderer[] liborRs = { dR_4 };
Poster liborPoster = new Poster(view, 14, 1, 12, 1, true, false,
"LIBOR", liborRowLbl, liborRowCod, null, liborColCod, liborRs);
liborPoster.loadPoster();
// VS 1st FUTURE
String[] vs1stRowCod = { "JBCTD1" };
String[] vs1stColLbl_1 = { "CTD", "CF" };
String[] vs1stColCod_1 = { "ISSUE", "CF" };
TableCellRenderer[] vs1stRs_1 = { szR, dR_6 };
Poster vs1stPoster_1 = new Poster(view, 16, 1, 1, 2, false, true,
"VS 1st FUTURE", null, vs1stRowCod, vs1stColLbl_1, vs1stColCod_1,
vs1stRs_1);
vs1stPoster_1.loadPoster();
String[] vs1stColLbl_2 = { "SaBPV", "SiBPV", "SaCHG", "SiCHG" };
String[] vs1stColCod_2 = { "SaBPV", "SiBPV", "SaCHG", "SiCHG" };
TableCellRenderer[] vs1stRs_2 = { dR_3, dR_3, dR_3, dR_3 };
Poster vs1stPoster_2 = new Poster(view, 16, 4, 1, 4, false, true,
"BPV", null, vs1stRowCod, vs1stColLbl_2, vs1stColCod_2, vs1stRs_2);
vs1stPoster_2.loadPoster();
// VS 2nd FUTURE
String[] vs2ndRowCod = { "JBCTD2" };
String[] vs2ndColLbl_1 = { "CTD", "CF" };
String[] vs2ndColCod_1 = { "ISSUE", "CF" };
TableCellRenderer[] vs2ndRs_1 = { szR, dR_6 };
Poster vs2ndPoster_1 = new Poster(view, 16, 8, 1, 2, false, true,
"VS 2nd FUTURE", null, vs2ndRowCod, vs2ndColLbl_1, vs2ndColCod_1,
vs2ndRs_1);
vs2ndPoster_1.loadPoster();
String[] vs2ndColLbl_2 = { "SaBPV", "SiBPV", "SaCHG", "SiCHG" };
String[] vs2ndColCod_2 = { "SaBPV", "SiBPV", "SaCHG", "SiCHG" };
TableCellRenderer[] vs2ndRs_2 = { dR_3, dR_3, dR_3, dR_3 };
Poster vs2ndPoster_2 = new Poster(view, 16, 11, 1, 4, false, true,
"BPV", null, vs2ndRowCod, vs2ndColLbl_2, vs2ndColCod_2, vs2ndRs_2);
vs2ndPoster_2.loadPoster();
// STRING
String[] stringRowCod = { "JEYc1", "JEYc2", "JEYc3", "JEYc4",
"JEYc5", "JEYc6",
"JEYc7", "JEYc8", "JEYc9", "JEYc10", "JEYc11", "JEYc12" };
String[] stringColCod = { "CODE", "ASK", "BID", "MID" };
TableCellRenderer[] stringRs = { szR, dR_3, dR_3, dR_3 };
Poster stringPoster = new Poster(view, 20, 1, 12, 4, false, false,
"STRING CALCULATION", null, stringRowCod, null, stringColCod,
stringRs);
stringPoster.loadPoster();
return view;
}
protected BasIndView createView2(BasIndClient client)
{
ColumnGroup[] groups = new ColumnGroup[fields.length];
for (int i = 0; i < groups.length; i++) {
if (fields.equals("INDICATION")) {
groups = new ColumnGroup("INDICATION");
groups.add(new ColumnGroup("ASK"));
groups.add(new ColumnGroup("BID"));
}
else if (fields.equals("LAST")) {
groups = new ColumnGroup("LAST");
}
else if (fields.equals("SNAPSHOT")) {
groups = new ColumnGroup("SNAPSHOT");
groups.add(new ColumnGroup("TIME"));
groups.add(new ColumnGroup("FUT"));
groups.add(new ColumnGroup("SwSpd"));
}
else if (fields.equals("SPREAD VS PCS")) {
groups = new ColumnGroup("SPREAD VS PCS");
groups.add(new ColumnGroup("ASK"));
groups.add(new ColumnGroup("BID"));
groups.add(new ColumnGroup("LAST"));
}
else if (fields.equals("PCS")) {
groups = new ColumnGroup("PCS");
}
else if (fields.equals("FV")) {
groups = new ColumnGroup("FV");
}
else if (fields.equals("VS SWAP")) {
groups = new ColumnGroup("VS SWAP");
groups.add(new ColumnGroup("ASK"));
groups.add(new ColumnGroup("BID"));
}
else if (fields.equals("AGAINST 1ST")) {
groups = new ColumnGroup("AGAINST 1st");
groups.add(new ColumnGroup("ASK"));
groups.add(new ColumnGroup("BID"));
}
else if (fields.equals("AGAINST 2ND")) {
groups = new ColumnGroup("AGAINST 2nd");
groups.add(new ColumnGroup("ASK"));
groups.add(new ColumnGroup("BID"));
}
else if (fields.equals("TED")) {
groups = new ColumnGroup("TED");
}
else if (fields.equals("TH SI CHG")) {
groups = new ColumnGroup("Th Si Chg");
groups.add(new ColumnGroup("1st"));
groups.add(new ColumnGroup("2nd"));
}
else if (fields.equals("SABPV")) {
groups = new ColumnGroup("SaBPV");
}
else if (fields.equals("SIBPV")) {
groups = new ColumnGroup("SiBPV");
}
else if (fields.equals("CPN")) {
groups = new ColumnGroup("CPN");
}
else if (fields.equals("MAT")) {
groups = new ColumnGroup("MAT");
}
else if (fields.equals("SETTLE")) {
groups = new ColumnGroup("SETTLE");
}
else if (fields.equals("ISDATE")) {
groups = new ColumnGroup("ISDATE");
}
else if (fields.equals("FCDATE")) {
groups = new ColumnGroup("FCDATE");
}
else if (fields.equals("PRICE")) {
groups = new ColumnGroup("PRICE");
groups.add(new ColumnGroup("ASK"));
groups.add(new ColumnGroup("BID"));
groups.add(new ColumnGroup("PRICE"));
}
else if (fields.equals("SIMPLE")) {
groups = new ColumnGroup("SIMPLE");
}
else if (fields.equals("SEMI")) {
groups = new ColumnGroup("SEMI");
}
else if (fields.equals("STRING")) {
groups = new ColumnGroup("STRING");
}
else if (fields.equals("CF1")) {
groups = new ColumnGroup("CF1");
}
else if (fields.equals("CF2")) {
groups = new ColumnGroup("CF2");
}
else if (fields.equals("OFFER YIELD")) {
groups = new ColumnGroup("OFFER YIELD");
groups.add(new ColumnGroup("ASK"));
groups.add(new ColumnGroup("BID"));
}
else if (fields.equals("INTERP SWAP")) {
groups = new ColumnGroup("INTERP SWAP");
groups.add(new ColumnGroup("ASK"));
groups.add(new ColumnGroup("BID"));
}
else if (fields.equals("LIFE")) {
groups = new ColumnGroup("LIFE");
}
}
String[] issues = null;
Vector vt = new Vector();
for (int i = 0; i < terms.length; i++) {
String[] tempIssues = client.getIssues(terms + "*");
for (int j = 0; j < tempIssues.length; j++)
vt.addElement(tempIssues[j]);
tempIssues = null;
}
issues = new String[vt.size()];
vt.copyInto(issues);
boolean uporder = (order.equals("ASCEND")) ? true : false;
int rows = issues.length;
int cols = ColumnGroup.getAllLeafCount(groups);
BasIndView view = new BasIndView(client, rows, cols);
view.setTableColumnHeader(groups);
view.setWidth(50);
view.setHighlight(3);
view.setFont(new Font("sansserif", Font.BOLD, 11));
Vector v = new Vector();
String keys[];
if (sortby.equals("LIFE")) {
for (int i = 0; i < rows; i++) {
v.addElement(client.getData(issues + ",LIFE"));
}
}
else if (order.equals("DESCEND")) {
TreeMap termorder = new TreeMap();
int border, edge, num = 1, sign;
for (int i = 0; i < rows; i++) {
border = Sorter.first_num(issues);
edge = (issues.endsWith("R")) ? issues.length()-1 :
issues.length();
String term = issues.substring(0, border);
int series = Integer.parseInt(issues.substring(border, edge));
if (!termorder.containsKey(term)) {
termorder.put(term, String.valueOf(num++));
}
sign = (uporder) ? 1 : -1;
int key = 100 + (sign) *
Integer.parseInt((String)termorder.get(term)) * 1000 + series;
v.addElement(new Integer(key).toString());
}
}
keys = new String[v.size()];
v.copyInto(keys);
Sorter.sort(keys, issues, 0, rows-1, uporder, doubleComp);
view.setIssues(issues);
DoubleRenderer dRO_3 = new DoubleRenderer(Color.white, Color.yellow,
hbgColor, 3, true);
DoubleRenderer dRE_3 = new DoubleRenderer(bggColor, Color.yellow,
hbgColor, 3, true);
DoubleRenderer dRO_3H = new DoubleRenderer(Color.white,
Color.yellow, hbgColor, 3, false);
DoubleRenderer dRE_3H = new DoubleRenderer(bggColor, Color.yellow,
hbgColor, 3, false);
DoubleRenderer dRO_0 = new DoubleRenderer(Color.white, Color.yellow,
hbgColor, 0, true);
DoubleRenderer dRE_0 = new DoubleRenderer(bggColor, Color.yellow,
hbgColor, 0, true);
DoubleRenderer dRO_6 = new DoubleRenderer(Color.white, Color.yellow,
hbgColor, 6, true);
DoubleRenderer dRE_6 = new DoubleRenderer(bggColor, Color.yellow,
hbgColor, 6, true);
DoubleRenderer dRO_100 = new DoubleRenderer(Color.white,
Color.yellow, hbgColor, 3, true); dRO_100.setMultiplier(100.0);
DoubleRenderer dRE_100 = new DoubleRenderer(bggColor, Color.yellow,
hbgColor, 3, true); dRE_100.setMultiplier(100.0);
DoubleRenderer dRO_2 = new DoubleRenderer(Color.white, Color.yellow,
hbgColor, 2, true);
DoubleRenderer dRE_2 = new DoubleRenderer(bggColor, Color.yellow,
hbgColor, 2, true);
DateRenderer dtRO = new DateRenderer(Color.white, Color.yellow,
hbgColor, "M/d/yy");
DateRenderer dtRE = new DateRenderer(bggColor, Color.yellow,
hbgColor, "M/d/yy");
DateRenderer tmRO = new DateRenderer(Color.white, Color.yellow,
hbgColor, "HH:mm");
DateRenderer tmRE = new DateRenderer(bggColor, Color.yellow,
hbgColor, "HH:mm");
DoubleRenderer dR_3;
DoubleRenderer dR_3H;
DoubleRenderer dR_0;
DoubleRenderer dR_6;
DoubleRenderer dR_100;
DoubleRenderer dR_2;
DateRenderer dtR;
DateRenderer tmR;
for (int row = 0; row < rows; row++) {
if (row % 2 == 0) {
dR_3H = dRO_3;
dR_3 = dRO_3H;
dR_0 = dRO_0;
dR_6 = dRO_6;
dR_100 = dRO_100;
dtR = dtRO;
tmR = tmRO;
dR_2 = dRO_2;
}
else {
dR_3H = dRE_3;
dR_3 = dRE_3H;
dR_0 = dRE_0;
dR_6 = dRE_6;
dR_100 = dRE_100;
dtR = dtRE;
tmR = tmRE;
dR_2 = dRE_2;
}
for (int fi = 0, col = 0; fi < fields.length; fi++) {
if (fields[fi].equals("INDICATION")) {
view.link(issues[row] + ",ASK", row, col++, dR_3, true);
view.link(issues[row] + ",BID", row, col++, dR_3, true);
}
else if (fields[fi].equals("LAST")) {
view.link(issues[row] + ",LAST", row, col++, dR_3, true);
}
else if (fields[fi].equals("SNAPSHOT")) {
view.link(issues[row] + ",SNAPSHOT TIME", row, col++, tmR, true);
view.link(issues[row] + ",SNAPSHOT FIRST LAST", row, col++, dR_2,
true);
view.link(issues[row] + ",SNAPSHOT SWAP SPREAD", row, col++,
dR_3, true);
}
else if (fields[fi].equals("SPREAD VS PCS")) {
view.link(issues[row] + ",ASK VS TSE", row, col++, dR_3, true);
view.link(issues[row] + ",BID VS TSE", row, col++, dR_3, true);
view.link(issues[row] + ",LAST VS TSE", row, col++, dR_3, true);
}
else if (fields[fi].equals("PCS")) {
view.link(issues[row] + ",SIMPLEY", row, col++, dR_3);
}
else if (fields[fi].equals("FV")) {
view.link(issues[row] + ",FV", row, col++, dR_3);
}
else if (fields[fi].equals("VS SWAP")) {
view.link(issues[row] + ",ASK VS SWAP", row, col++, dR_3H);
view.link(issues[row] + ",BID VS SWAP", row, col++, dR_3H);
}
else if (fields[fi].equals("AGAINST 1ST")) {
view.link(issues[row] + ",ASK AGAINST FIRST", row, col++, dR_3);
view.link(issues[row] + ",BID AGAINST FIRST", row, col++, dR_3);
}
else if (fields[fi].equals("AGAINST 2ND")) {
view.link(issues[row] + ",ASK AGAINST SECOND", row, col++, dR_3);
view.link(issues[row] + ",BID AGAINST SECOND", row, col++, dR_3);
}
else if (fields[fi].equals("TED")) {
view.link(issues[row] + ",TED", row, col++, dR_3);
}
else if (fields[fi].equals("TH SI CHG")) {
view.link(issues[row] + ",SiCHG AGAINST FIRST", row, col++,
dR_3H);
view.link(issues[row] + ",SiCHG AGAINST SECOND", row, col++,
dR_3H);
}
else if (fields[fi].equals("SABPV")) {
view.link(issues[row] + ",SaBPV", row, col++, dR_3);
}
else if (fields[fi].equals("SIBPV")) {
view.link(issues[row] + ",SiBPV", row, col++, dR_3);
}
else if (fields[fi].equals("CPN")) {
view.link(issues[row] + ",COUPON", row, col++, dR_100);
}
else if (fields[fi].equals("MAT")) {
view.link(issues[row] + ",MATURITY", row, col++, dtR);
}
else if (fields[fi].equals("SETTLE")) {
view.link(issues[row] + ",SETTLE", row, col++, dtR);
}
else if (fields[fi].equals("ISDATE")) {
view.link(issues[row] + ",ISDATE", row, col++, dtR);
}
else if (fields[fi].equals("FCDATE")) {
view.link(issues[row] + ",FCDATE", row, col++, dtR);
}
else if (fields[fi].equals("PRICE")) {
view.link(issues[row] + ",ASK PRICE", row, col++, dR_3);
view.link(issues[row] + ",BID PRICE", row, col++, dR_3);
view.link(issues[row] + ",LAST PRICE", row, col++, dR_3);
}
else if (fields[fi].equals("SIMPLE")) {
view.link(issues[row] + ",SIMPLE YIELD", row, col++, dR_3);
}
else if (fields[fi].equals("SEMI")) {
view.link(issues[row] + ",SEMI YIELD", row, col++, dR_3);
}
else if (fields[fi].equals("STRING")) {
view.link(issues[row] + ",STRING", row, col++, dR_3H);
}
else if (fields[fi].equals("CF1")) {
view.link(issues[row] + ",CF1", row, col++, dR_6);
}
else if (fields[fi].equals("CF2")) {
view.link(issues[row] + ",CF2", row, col++, dR_6);
}
else if (fields[fi].equals("OFFER YIELD")) {
view.link(issues[row] + ",ASK OFFER YIELD", row, col++, dR_3);
view.link(issues[row] + ",BID OFFER YIELD", row, col++, dR_3);
}
else if (fields[fi].equals("INTERP SWAP")) {
view.link(issues[row] + ",ASK INTERP SWAP", row, col++, dR_3H);
view.link(issues[row] + ",BID INTERP SWAP", row, col++, dR_3H);
}
else if (fields[fi].equals("LIFE")) {
view.link(issues[row] + ",LIFE", row, col++, dR_0);
}
}
}
return view;
}
protected void createViewsDialog()
{
typesPanel = new TypesPanel(prods);
String[] oldprods = typesPanel.getSelectedProducts();
JOptionPane viewspane = new JOptionPane(typesPanel,
JOptionPane.PLAIN_MESSAGE, JOptionPane.OK_CANCEL_OPTION);
typesDialog = viewspane.createDialog(this, "View selector");
typesDialog.setResizable(false);
typesDialog.setModal(true);
typesDialog.show();
Object value = viewspane.getValue();
if ((value instanceof Integer) && (((Integer)value).intValue() ==
JOptionPane.OK_OPTION)) {
prods = typesPanel.getSelectedProducts();
for (int i = 0; i < prods.length; i++) {
if (prods.equals("RATES")) {
view1.stop();
viewsPanel.remove(view1);
}
else if (prods.equals("JGBS")) {
view2.stop();
viewsPanel.remove(view2);
}
}
basePanel.remove(viewsPanel);
viewsPanel = new JPanel(new BorderLayout());
config.setProducts(prods);
config.save();
for (int i = 0; i < prods.length; i++) {
if (prods.equals("RATES")) {
view1 = createView1(client);
view1.start();
viewsPanel.add(view1, BorderLayout.NORTH);
}
else if (prods.equals("JGBS")) {
view2 = createView2(client);
view2.start();
viewsPanel.add(view2, BorderLayout.CENTER);
}
}
basePanel.add(viewsPanel, BorderLayout.CENTER);
basePanel.invalidate();
basePanel.validate();
}
else {
typesPanel.setSelectedProducts(oldprods);
}
typesDialog.dispose();
}
protected void createBondsDialog()
{
bondsPanel = new BondsPanel(terms, sortby, order);
String[] oldterms = bondsPanel.getTerms();
String oldsortby = bondsPanel.getSortBy();
String oldorder = bondsPanel.getOrder();
JOptionPane bondspane = new JOptionPane(bondsPanel,
JOptionPane.PLAIN_MESSAGE, JOptionPane.OK_CANCEL_OPTION);
bondsDialog = bondspane.createDialog(this, "Bonds Selector");
bondsDialog.setResizable(false);
bondsDialog.setModal(true);
bondsDialog.show();
Object value = bondspane.getValue();
if ((value instanceof Integer) && (((Integer)value).intValue() ==
JOptionPane.OK_OPTION)) {
terms = bondsPanel.getTerms();
sortby = bondsPanel.getSortBy();
order = bondsPanel.getOrder();
view2.stop();
viewsPanel.remove(view2);
view2 = createView2(client);
view2.start();
viewsPanel.add(view2, BorderLayout.CENTER);
viewsPanel.invalidate();
viewsPanel.validate();
config.setTerms(terms);
config.setSortBy(sortby);
config.setOrder(order);
config.save();
}
else {
bondsPanel.setTerms(oldterms);
bondsPanel.setSortBy(oldsortby);
bondsPanel.setOrder(oldorder);
}
bondsDialog.dispose();
}
protected void createFieldsDialog()
{
fieldsPanel = new FieldsPanel(fields);
String[] oldfields = fieldsPanel.getViewList();
JOptionPane fieldspane = new JOptionPane(fieldsPanel,
JOptionPane.PLAIN_MESSAGE, JOptionPane.OK_CANCEL_OPTION);
fieldsDialog = fieldspane.createDialog(this, "Fields Selector");
fieldsDialog.setResizable(false);
fieldsDialog.setModal(true);
fieldsDialog.show();
Object value = fieldspane.getValue();
if ((value instanceof Integer) && (((Integer)value).intValue() ==
JOptionPane.OK_OPTION)) {
fields = fieldsPanel.getViewList();
view2.stop();
viewsPanel.remove(view2);
view2 = createView2(client);
view2.start();
viewsPanel.add(view2, BorderLayout.CENTER);
viewsPanel.invalidate();
viewsPanel.validate();
config.setFields(fields);
config.save();
}
else {
fieldsPanel.setViewList(oldfields);
}
fieldsDialog.dispose();
}
public void setURL(URL url) { this.url = url; }
public URL getURL() { return url; }
}