package org.korsakow.ide.ui.resources;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.util.Collection;
import java.util.TreeSet;
import javax.swing.BorderFactory;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTabbedPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import org.korsakow.domain.KeywordFactory;
import org.korsakow.domain.interf.IKeyword;
import org.korsakow.ide.lang.LanguageBundle;
import org.korsakow.ide.ui.components.KLayoutPanel;
import org.korsakow.ide.ui.components.TokenizerTextArea;
import org.korsakow.ide.ui.factory.IUIFactory;
import org.korsakow.ide.ui.factory.UIFactory;
import org.korsakow.ide.util.UIResourceManager;
import org.korsakow.ide.util.UIUtil;
public abstract class ResourceView extends KLayoutPanel
{
protected Long resourceId;
protected JTextArea statusArea;
protected JLabel nameLabel;
protected JTextField nameField;
protected JPanel mainPanel;
protected JLabel inKeywordLabel;
protected TokenizerTextArea inKeywordBox;
protected JTabbedPane tabbedPane;
public ResourceView()
{
initUI();
initListeners();
}
protected void createUIComponents()
{
IUIFactory uifac = UIFactory.getFactory();
//add(statusArea = uifac.createTextArea("statusArea"));
statusArea = uifac.createTextArea("statusArea");
add(nameLabel = uifac.createLabel("nameLabel"));
add(nameField = uifac.createTextField("nameField"));
add(tabbedPane = uifac.createTabbedPane("tabbedPane"));
add(inKeywordLabel = uifac.createLabel("inKeywordsLabel", LanguageBundle.getString("resourceview.inkeywords.label"), UIResourceManager.getIcon(UIResourceManager.ICON_SNU_IN)));
add(uifac.customComponent("inKeywords", (inKeywordBox = new TokenizerTextArea())));
}
protected void layoutUIComponents()
{
IUIFactory uifac = UIFactory.getFactory();
}
protected void initUI2()
{
createUIComponents();
layoutUIComponents();
}
protected void initUI()
{
setLayout(new BorderLayout());
JPanel topPanel = new KLayoutPanel();
topPanel.setLayout(new BoxLayout(topPanel, BoxLayout.Y_AXIS));
add(topPanel);
//add(mainPanel);
// Box box;
statusArea = new JTextArea();
statusArea.setEditable(false);
statusArea.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
topPanel.add(statusArea);
statusArea.setBackground(Color.white);
statusArea.setMaximumSize(new Dimension(Integer.MAX_VALUE, 60));
statusArea.setVisible(false);
JPanel subPanel;
Box subBox;
JPanel namePanel = new KLayoutPanel(new BorderLayout());
topPanel.add(namePanel);
// namePanel.add(nameLabel = new JLabel("Name"), BorderLayout.WEST);
namePanel.add(nameField = new JTextField());
namePanel.setMaximumSize(new Dimension(Integer.MAX_VALUE, nameField.getPreferredSize().height)); // why is this necesasry?
// nameField.setMaximumSize(new Dimension(Integer.MAX_VALUE, nameField.getMinimumSize().height)); // why is this necesasry?
tabbedPane = new JTabbedPane();
mainPanel = new KLayoutPanel();
mainPanel.setLayout(new BorderLayout());
tabbedPane.addTab(LanguageBundle.getString("resourceview.tab.resource.label"), mainPanel);
topPanel.add(tabbedPane);
inKeywordBox = new TokenizerTextArea();
// mainPanel.add(keywordBox = new TokenizerTextArea());
// tabbedPane.addTab(LanguageBundle.getString("resourceview.tab.keywords.label"), keywordBox = new TokenizerTextArea());
}
public void setStatusText(String text)
{
statusArea.setText(text);
statusArea.setVisible(text.length()>0);
}
public boolean isViewValid()
{
return statusArea.getText()==null || statusArea.getText().length() == 0;
}
protected void initListeners()
{
}
public void setResourceId(Long id)
{
resourceId = id;
}
public Long getResourceId()
{
return resourceId;
}
public String getNameFieldText()
{
return nameField.getText();
}
public void setNameFieldText(String text)
{
nameField.setText(text);
}
public Collection<IKeyword> getKeywords()
{
Collection<IKeyword> keywords = new TreeSet<IKeyword>();
Collection<String> tokens = inKeywordBox.getTokens();
for (String token : tokens)
keywords.add(KeywordFactory.createNew(token));
return keywords;
}
public void setKeywords(Collection<IKeyword> keywords)
{
Collection<String> tokens = new TreeSet<String>();
for (IKeyword keyword : keywords)
tokens.add(keyword.getValue());
setKeywordTokens(tokens);
}
public void setKeywordTokens(Collection<String> keywords)
{
inKeywordBox.setTokens(keywords);
}
public Collection<String> getKeywordTokens(Collection<String> tokens)
{
return inKeywordBox.getTokens();
}
public void dispose()
{
final long f1 = Runtime.getRuntime().freeMemory();
final long t1 = Runtime.getRuntime().totalMemory();
final long m1 = Runtime.getRuntime().maxMemory();
// System.out.println("BEFORE: " + f1 + "\t" + m1 + "\t" + t1);
System.gc();
UIUtil.runUITaskLater(new Runnable() {
public void run() {
long f2 = Runtime.getRuntime().freeMemory();
long t2 = Runtime.getRuntime().totalMemory();
long m2 = Runtime.getRuntime().maxMemory();
long f3 = (f2-f1) / 1024 / 1024;
long t3 = (t2-t1) / 1024 / 1024;
long m3 = (m2-m1) / 1024 / 1024;
// System.out.println("AFTER: " + f2 + "\t" + m2 + "\t" + t2);
// System.out.println("DELTA: " + f3 + "\t" + m3 + "\t" + t3);
}
});
}
}