001: // THIS SOFTWARE IS PROVIDED BY SOFTARIS PTY.LTD. AND OTHER METABOSS
002: // CONTRIBUTORS ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING,
003: // BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
004: // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SOFTARIS PTY.LTD.
005: // OR OTHER METABOSS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
006: // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
007: // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
008: // OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
009: // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
010: // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
011: // EVEN IF SOFTARIS PTY.LTD. OR OTHER METABOSS CONTRIBUTORS ARE ADVISED OF THE
012: // POSSIBILITY OF SUCH DAMAGE.
013: //
014: // Copyright 2000-2005 © Softaris Pty.Ltd. All Rights Reserved.
015: package com.metaboss.applications.designstudio.errorsview;
016:
017: import java.awt.Component;
018: import java.awt.Point;
019: import java.awt.Rectangle;
020: import java.awt.event.MouseAdapter;
021: import java.awt.event.MouseEvent;
022:
023: import javax.swing.JLabel;
024: import javax.swing.JTable;
025: import javax.swing.ListSelectionModel;
026: import javax.swing.SwingConstants;
027: import javax.swing.table.AbstractTableModel;
028: import javax.swing.table.DefaultTableCellRenderer;
029: import javax.swing.table.TableColumn;
030:
031: import com.metaboss.applications.designstudio.Application;
032: import com.metaboss.applications.designstudio.BaseUserObject;
033: import com.metaboss.applications.designstudio.auxilarydialogs.ErrorDescriptionDialog;
034:
035: /* Errors table class */
036:
037: public class ErrorsTable extends JTable {
038: public ErrorsTable(AbstractTableModel pModel) {
039: super (pModel);
040:
041: setAutoResizeMode(AUTO_RESIZE_OFF);
042: setCellSelectionEnabled(true);
043: setRowSelectionAllowed(true);
044: setColumnSelectionAllowed(false);
045: setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
046:
047: TableColumn lFirstColumn = getColumnModel().getColumn(0);
048: TableColumn lSecondColumn = getColumnModel().getColumn(1);
049: TableColumn lThirdColumn = getColumnModel().getColumn(2);
050:
051: lFirstColumn.setMinWidth(20);
052: lFirstColumn.setPreferredWidth(20);
053: lFirstColumn.setCellRenderer(new DefaultTableCellRenderer() {
054: private JLabel mLabel = new JLabel();
055:
056: public Component getTableCellRendererComponent(
057: JTable table, Object value, boolean isSelected,
058: boolean hasFocus, int row, int column) {
059: mLabel.setText(value.toString());
060: mLabel.setHorizontalAlignment(SwingConstants.CENTER);
061: return mLabel;
062: }
063: });
064:
065: lThirdColumn.setPreferredWidth(200);
066:
067: int lWidth = getWidth() - lThirdColumn.getPreferredWidth()
068: - lFirstColumn.getPreferredWidth();
069: if (lWidth < 300)
070: lWidth = 300;
071: lSecondColumn.setPreferredWidth(lWidth);
072:
073: addMouseListener(new MouseHandler());
074: }
075:
076: public void resizeColumns(int pWidth) {
077: TableColumn lFirstColumn = getColumnModel().getColumn(0);
078: TableColumn lSecondColumn = getColumnModel().getColumn(1);
079: TableColumn lThirdColumn = getColumnModel().getColumn(2);
080:
081: int lWidth = pWidth - lThirdColumn.getWidth()
082: - lFirstColumn.getWidth();
083: if (lWidth < 300)
084: lWidth = 300;
085: lSecondColumn.setPreferredWidth(lWidth);
086: }
087:
088: // view error information
089: public void viewErrorProperties() {
090: int lRow = getSelectedRow();
091: if (lRow > -1) {
092: String lError = ((ErrorsModel) getModel())
093: .getErrorInfo(lRow).mFullDescription;
094: ErrorDescriptionDialog lDialog = new ErrorDescriptionDialog(
095: lError);
096: lDialog.getModalResult();
097: }
098: }
099:
100: public String getToolTipText(MouseEvent event) {
101: int lIndex = rowAtPoint(event.getPoint());
102: if (lIndex > -1) {
103: ErrorsModel lModel = (ErrorsModel) getModel();
104: return lModel.getErrorInfo(lIndex).mDescription;
105: }
106: return super .getToolTipText(event);
107: }
108:
109: public Point getToolTipLocation(MouseEvent event) {
110: int lIndex = rowAtPoint(event.getPoint());
111: if (lIndex > -1) {
112: Rectangle lRect = getCellRect(lIndex, 1, true);
113: return new Point(lRect.x, lRect.y);
114: }
115: return super .getToolTipLocation(event);
116: }
117:
118: /* Auxilary classes */
119:
120: /* Table Mouse Events Handler */
121:
122: public class MouseHandler extends MouseAdapter {
123: public void mousePressed(MouseEvent e) {
124: if ((e.getModifiers() & MouseEvent.BUTTON1_MASK) != 0) {
125: ErrorsModel lModel = (ErrorsModel) getModel();
126: String lID = lModel.getErrorInfo(getSelectedRow()).mMofID;
127: if (lID != null && lID.length() > 0) {
128: BaseUserObject lObject = Application
129: .getUserObjectByID(lID);
130: if (lObject != null) {
131: /*if (e.getClickCount()==1)
132: {
133: Application.fireObjectSelect(lObject);
134: } else*/
135: if (e.getClickCount() == 2) {
136: //lObject.getEditAction().run();
137: Application.fireObjectSelect(lObject);
138: viewErrorProperties();
139: }
140: }
141: }
142: }
143: super.mousePressed(e);
144: }
145: }
146: }
|