1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160
|
/*
* Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; version 2 of the
* License.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
* 02110-1301 USA
*/
#ifndef __wb_sql_editor_result_tab__
#define __wb_sql_editor_result_tab__
#include "workbench/wb_backend_public_interface.h"
#include "mforms/appview.h"
#include "mforms/tabview_dock.h"
#include "mforms/tabswitcher.h"
#include "sqlide/recordset_be.h"
#include "grts/structs.db.query.h"
#include <boost/signals2.hpp>
#include "spatial_data_view.h"
#include "wb_sql_editor_panel.h"
namespace mforms
{
class ToolBar;
class ToolBarItem;
class ContextMenu;
class TreeNodeView;
class RecordGrid;
};
class ResultFormView;
class MYSQLWBBACKEND_PUBLIC_FUNC SqlEditorResult : public mforms::AppView
{
SqlEditorPanel *_owner;
Recordset::Ptr _rset;
class DockingDelegate;
public:
SqlEditorResult(SqlEditorPanel *owner);
void set_recordset(Recordset::Ref rset);
virtual ~SqlEditorResult();
Recordset::Ref recordset() const;
std::string caption() const;
db_query_ResultPanelRef grtobj() { return _grtobj; }
db_query_ResultsetRef result_grtobj() { return _grtobj->resultset(); }
virtual bool can_close();
virtual void close();
void show_export_recordset();
void show_import_recordset();
void dock_result_grid(mforms::View *view);
// mforms::View *result_grid() { return _result_grid; }
SqlEditorPanel *owner() { return _owner; }
std::vector<SpatialDataView::SpatialDataSource> get_spatial_columns();
mforms::RecordGrid *result_grid() { return _result_grid; }
mforms::DockingPoint *dock() { return &_tabdock; }
void apply_changes();
void discard_changes();
bool has_pending_changes();
virtual void set_title(const std::string &title);
void set_pinned(bool flag) { _pinned = flag; }
bool pinned() const { return _pinned; }
void view_record_in_form(int row_id);
void open_field_editor(int row, int column);
private:
mforms::TabView _tabview;
mforms::TabSwitcher _switcher;
DockingDelegate *_tabdock_delegate;
mforms::DockingPoint _tabdock;
mforms::AppView *_column_info_box;
mforms::AppView *_query_stats_box;
mforms::AppView *_resultset_placeholder;
mforms::AppView *_execution_plan_placeholder;
ResultFormView *_form_result_view;
SpatialDataView *_spatial_result_view;
mforms::ContextMenu *_column_info_menu;
mforms::ContextMenu *_grid_header_menu;
std::list<mforms::ToolBar*> _toolbars;
mforms::RecordGrid *_result_grid;
boost::signals2::signal<void (bool)> _collapse_toggled;
boost::signals2::connection _collapse_toggled_sig;
db_query_ResultPanelRef _grtobj;
std::vector<std::string> _column_width_storage_ids;
bool _column_info_created;
bool _query_stats_created;
bool _form_view_created;
bool _spatial_view_initialized;
bool _pinned;
void update_selection_for_menu_extra(mforms::ContextMenu *menu, const std::vector<int> &rows, int column);
void switch_tab();
void toggle_switcher_collapsed();
void switcher_collapsed();
void create_query_stats_panel();
void create_column_info_panel();
void create_spatial_view_panel_if_needed();
void dock_result_grid(mforms::RecordGrid *view);
void restore_grid_column_widths();
std::vector<float> get_autofit_column_widths(Recordset *rs);
void reset_column_widths();
void add_switch_toggle_toolbar_item(mforms::ToolBar *tbar);
void copy_column_info_name(mforms::TreeNodeView *tree);
void copy_column_info(mforms::TreeNodeView *tree);
void copy_column_name();
void copy_all_column_names();
void reset_sorting();
void on_recordset_column_resized(int column);
void onRecordsetColumnsResized(const std::vector<int> cols);
};
#endif /* __wb_sql_editor_result_tab__ */
|